$json=
"{
"name":"John",
"name":"Karel"
}";
如果使用此json_decode($json, true);
我得到array['name']="Karel"
所以在解析后我得到以下xml:
的xml:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<name value="Karel"/>
</root>
我需要得到这个xml:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<name>
<element>John</element>
<element>Karel</element>
</name>
</root>
我认为我需要自己的json解析器,我需要得到array['name']=["John","Karel"];
然后我可以设法做到这一点。
编辑: 我无法编辑输入json。我需要从文件解码到关联数组,如果是相同的键,我需要在同一个索引上创建一个数组,并且两个值都相同。
好的整个JSONfile是这样的:
{
"name":"John",
"name":"Karel",
"heslo":{"content":"Dam ten shit podle sebe"},
"ageA":30,
"d":21,
"d":42,
"ageB":30.2,
"ageC":1,
"ageD":0,
"testChar":["&","<",">","\"", "'", "-"],
"lada":{"pritelkyne":"Kristynka","plysak":"mimon", "vek":20, "oblibenýSeriál":"RobinsonůvOstrov"},
"null":null,
"boolT":true,
"boolF":false,
"cars":[ { "type": "Skoda", "number": "212 555-1234" },"Ford", "BMW",{ "type": "Hyundai", "number": "215 555-1234" }, "Fiat" ],
"numbersSeven":[1,2,3,4,5,6,7],
"numbersFourteen":[1,2,3,4,5,6,7,8,9,10,11,12,13,14],
"numbersHundredOne":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101]
}
但它只是众多例子中的一个,我需要这样做,而不是这个json。
那我该怎么做解析呢?
答案 0 :(得分:2)
您不能为不同的值使用相同的密钥。您可以将值存储在单个数组中,而不是这个。或者使用不同的数组,然后将其存储在另一个键中:
尝试使用以下代码:
$json : '{"names":[{"name":"John"},{
"name":"Karel"}]
}';
OR
$json = '{"name":["John","Karel"]}';
修改强>
作为已编辑的问题如果您收到此输入并想在reeving后更改json。您可以尝试以下代码(更改json字符串)
$json=
'{
"name":"John","name":"Karel"
}';
$json = ltrim($json,"{");
$json= rtrim($json,"}");
$tmp_arr = (array_map('trim', explode(',', $json)));
$new_arr['name']=array();
foreach ($tmp_arr as $key => $value) {
$val = explode(':', $value);
if(count($val)>1){
$val=$val[1];
$val = str_replace('"', '', $val);
$new_arr['name'][] = $val;
}
}
echo json_encode($new_arr); //{"name":["John","Karel"]}
答案 1 :(得分:0)
尝试使用jsonarray:它看起来像[{“name”:“John”}, {“name”:“Karel”}] 所以试试这个
$arraysforjson = array();
$arraysforjson [] = array('name' => "$name")
$json = json_encode($d);