Json_decode () PHP с этой строкой JSON - PullRequest
2 голосов
/ 15 сентября 2011

У меня есть эта строка JSON:

 {
    "name": "test task1",
    "desc": "test desc1",
    "id": "1"
}{
    "name": "test task1aaaa",
    "desc": "test desc1",
    "id": "2"
}

Но похоже, что это не правильно ( JSONLint говорит мне), поэтому PHP json_decode() не может его декодировать. Есть какой-либо способ разделить два массива JSON на две строки (или на сколько строк массивы), чтобы json_decode декодировал их?

Ответы [ 3 ]

2 голосов
/ 15 сентября 2011

Если ваше намерение состоит в том, чтобы иметь массив из двух элементов, ваш JSON должен выглядеть следующим образом:

[
    {
        "name": "test task1",
        "desc": "test desc1",
        "id": "1"
    },{
        "name": "test task1aaaa",
        "desc": "test desc1",
        "id": "2"
    }
]
0 голосов
/ 15 сентября 2011
<?php
$str='{
    "name": "test task1",
    "desc": "test desc1",
    "id": "1"
}{
    "name": "test task1aaaa",
    "desc": "test desc1",
    "id": "2"
}';

$arrays = explode("{", $str);
foreach($arrays as &$arr) $arr='{'.$arr;

//decode
foreach ($arrays as $arr) print_r(json_decode($arr,true));
0 голосов
/ 15 сентября 2011

самый простой

$str = ' {
    "name": "test task1",
    "desc": "test desc1",
    "id": "1"
}{
    "name": "test task1aaaa",
    "desc": "test desc1",
    "id": "2"
}';

var_dump(json_decode('['.str_replace('}{','},{',$str).']'));
...