【发布时间】:2018-07-30 14:20:19
【问题描述】:
我正在尝试将xml转换为json,我尝试使用以下代码,
$xml = simplexml_load_string($response, 'SimpleXMLElement', LIBXML_NOCDATA);
$json = json_encode($xml);
$arr = json_decode($json,true);
这段代码运行良好,但有一个问题, XML文件中的某些内容有可能有多个值或只有一个值,这些值的XML转换结果会有所不同,对于单值它将是与单个值关联的键,对于多值,它将返回一个数组。我的问题是如何确保返回值是一致的。
这里是返回值的例子。
多值
"item": [
{
"product_id": "XL2",
"description": "222 For You",
"d_image": "D_NUL.png",
"m_image": "M_NUL.png",
"dm_image": "DM_NUL.png",
"whole_toppings": {
"topping": "PEPPERONI"
},
"left_toppings": {
"topping": "MUSHROOMS"
},
"right_toppings": {
"topping": "ANCHOVIES"
},
"crust": "THICK CRUST (REGULAR)",
"sauce": "REGULAR",
"cook": "REGULAR"
},
{
"product_id": "XLA",
"description": [],
"d_image": "D_NUL.png",
"m_image": "M_NUL.png",
"dm_image": "DM_NUL.png",
"whole_toppings": {
"topping": "PEPPERONI"
},
"left_toppings": {
"topping": "MUSHROOMS"
},
"right_toppings": {
"topping": "ANCHOVIES"
},
"crust": "THICK CRUST (REGULAR)",
"sauce": "REGULAR",
"cook": "REGULAR"
}
]
},
单值:
"item": {
"product_id": "MMED",
"description": "Mediterranean",
"d_image": "D_NUL.png",
"m_image": "M_NUL.png",
"dm_image": "DM_NUL.png",
"whole_toppings": {
"topping": [
"PEPPERONI",
"NO ONIONS",
"NO FETA CHEESE",
"NO SEASONED BEEF",
"NO TOMATOES"
]
},
我的预期结果是
"item": [{
"product_id": "MMED",
"description": "Mediterranean",
"d_image": "D_NUL.png",
"m_image": "M_NUL.png",
"dm_image": "DM_NUL.png",
"whole_toppings": {
"topping": [
"PEPPERONI",
"NO ONIONS",
"NO FETA CHEESE",
"NO SEASONED BEEF",
"NO TOMATOES"
]
}],
感谢您的帮助。
【问题讨论】:
-
所以你希望
"product_id": "XL2"改为"product_id": ["XL2"]? -
if item:{ } 只有一个值,而不是只返回一个对象,我希望返回值是一个包含一个对象的数组。谢谢!
-
我不明白,您能否提供一个问题中预期输出的示例?
-
"item":[ { "product_id": "MMED", "description": "Mediterranean", "d_image": "D_NUL.png", "m_image": "M_NUL.png", “dm_image”:“DM_NUL.png”、“whole_toppings”:{“topping”:[“PEPPERONI”、“NO ONIONS”、“NO FETA CHEESE”、“NO SEASONED BEEF”、“NO TOMATOES”] }]、
-
我根本看不懂。将该信息编辑到您的问题中。