Я с этой проблемой на PHP, когда я пытаюсь преобразовать массив в json У меня есть рекурсивная функция, которая строит массив для кодирования его в формате jSon.
Это массив:
$data = array( array('id' => 1, 'parent_id' => null, 'text' => 'lorem ipsum'), array('id' => 2, 'parent_id' => 1, 'text' => 'lorem ipsum1'), array('id' => 3, 'parent_id' => 1, 'text' => 'lorem ipsum2'), array('id' => 4, 'parent_id' => 2, 'text' => 'lorem ipsum3'), array('id' => 5, 'parent_id' => 3, 'text' => 'lorem ipsum4'), array('id' => 6, 'parent_id' => null, 'text' => 'lorem ipsum5'), );
Это моя функция:
function trataArray($data) { $itemsByReference = array(); // Build array of item references: foreach ($data as $key => &$item) { $itemsByReference[$item['id']] = &$item; // Children array: $itemsByReference[$item['id']]['children'] = array(); // Empty data class (so that json_encode adds "data: {}" ) $itemsByReference[$item['id']]['data'] = new StdClass(); } // Set items as children of the relevant parent item. foreach ($data as $key => &$item) if ($item['parent_id'] && isset($itemsByReference[$item['parent_id']])) $itemsByReference [$item['parent_id']]['children'][] = &$item; // Remove items that were added to parents elsewhere: foreach ($data as $key => &$item) { if ($item['parent_id'] && isset($itemsByReference[$item['parent_id']])) unset($data[$key]); } // Encode: return $data;
неfunction trataArray($data) { $itemsByReference = array(); // Build array of item references: foreach ($data as $key => &$item) { $itemsByReference[$item['id']] = &$item; // Children array: $itemsByReference[$item['id']]['children'] = array(); // Empty data class (so that json_encode adds "data: {}" ) $itemsByReference[$item['id']]['data'] = new StdClass(); } // Set items as children of the relevant parent item. foreach ($data as $key => &$item) if ($item['parent_id'] && isset($itemsByReference[$item['parent_id']])) $itemsByReference [$item['parent_id']]['children'][] = &$item; // Remove items that were added to parents elsewhere: foreach ($data as $key => &$item) { if ($item['parent_id'] && isset($itemsByReference[$item['parent_id']])) unset($data[$key]); } // Encode: return $data;
}
Это мой json, но у этого json есть ошибки:
{ "0": // Problem here... T_T { "id": 1, "parent_id": null, "name": "lorem ipsum", "children": [ { "id": 2, "parent_id": 1, "name": "lorem ipsum1", "children": [ { "id": 4, "parent_id": 2, "name": "lorem ipsum3", "children": [], "data": {} } ], "data": {} }, { "id": 3, "parent_id": 1, "name": "lorem ipsum2", "children": [ { "id": 5, "parent_id": 3, "name": "lorem ipsum4", "children": [], "data": {} } ], "data": {} } ], "data": {} }, "5": // And here... T_T { "id": 6, "parent_id": null, "name": "lorem ipsum5", "children": [], "data": {} } }
Строки «0»: и «5»: вызывают ошибку при разметке json. Я попытался удалить его с помощью preg_replace, но я ужасно работаю с регулярными выражениями. Кто-то может мне помочь …: D
Спасибо, парни!
У меня была идея … 🙂
Я искал способы протестировать thins shit …: D И у меня есть идея, получить JSON из плагина и ENCODE это как один массив и напечатать его, чтобы посмотреть, что мне нужно будет дать JSON Encode, чтобы дать мне правильная вещь.
Он воспроизводит его:
Array ( [0] => stdClass Object ( [id] => 1 [text] => City [children] => Array ( [0] => stdClass Object ( [id] => 11 [text] => Wyoming [children] => Array ( [0] => stdClass Object ( [id] => 111 [text] => Albin ) [1] => stdClass Object ( [id] => 112 [text] => Canon ) [2] => stdClass Object ( [id] => 113 [text] => Egbert ) ) ) [1] => stdClass Object ( [id] => 12 [text] => Washington [state] => closed [children] => Array ( [0] => stdClass Object ( [id] => 121 [text] => Bellingham ) [1] => stdClass Object ( [id] => 122 [text] => Chehalis ) [2] => stdClass Object ( [id] => 123 [text] => Ellensburg ) [3] => stdClass Object ( [id] => 124 [text] => Monroe ) ) ) ) ) )
JSON его база на OBJECTS, я думаю, что ее там ошибка, я пытаюсь работать с массивами и преобразовывать ее, когда данные ее являются объектом.
Кто-то знает, как создать что-то подобное? Просто способ, которым я могу думать … Спасибо, ребята …
: DDD