У меня есть два файла JSON, каждый из которых содержит FeatureCollection с одинаковой структурой, но разными данными.Я пытаюсь объединить их в один файл JSON в виде единой коллекции FeatureCollection, содержащей все данные.Мне почти удалось это сделать, но «FeatureCollection» повторяется в начале файла, что делает его недействительным JSON.
Я думаю, что это как-то связано с тем, как я JSON кодирую два файлапо отдельности, а затем снова, когда я их объединяю, но после дня попыток различных комбинаций мне не удалось выяснить это.
Это код, который создает первый файл JSON (где генерируется $ resultsпо запросу базы данных):
$geojson = array( 'type' => 'FeatureCollection', 'features' => array());
while ( $results->fetch() ) {
$feature = array(
'type' => 'Feature',
'properties' => array(
'name' => $results->field('name')
),
'geometry' => array(
'type' => 'Point',
'coordinates' => array((float)$results->field('long'), (float)$results->field('lat'))
)
);
array_push($geojson['features'], $feature);
};
// // Create JSON file
$fp = fopen('file1.json', 'w');
fwrite($fp, json_encode($geojson));
fclose($fp);
Второй файл (file2.json) создается таким же образом, например:
$geojson = array( 'type' => 'FeatureCollection', 'features' => array());
while ( $results->fetch() ) {
$feature = array(
'type' => 'Feature',
'properties' => array(
'name' => $results->field('name')
),
'geometry' => array(
'type' => 'Point',
'coordinates' => array((float)$results->field('long'), (float)$results->field('lat'))
)
);
array_push($geojson['features'], $feature);
};
// // Create JSON file
$fp = fopen('file2.json', 'w');
fwrite($fp, json_encode($geojson));
fclose($fp);
Затем я объединяю их, используя этот код:
$jsonString = file_get_contents('file2.json');
$jsonString2 = file_get_contents('file1.json');
$data = json_decode($jsonString, true);
$data2 = json_decode($jsonString2, true);
$op = array_merge_recursive( $data, $data2 );
$fp = fopen('file3.json', 'w');
fwrite($fp, json_encode($op));
fclose($fp);
Полученный файл в основном в порядке, он содержит все необходимые мне данные и правильно отформатирован, за исключением того, что в начале файла он имеет:
{"type":["FeatureCollection","FeatureCollection"],"features":[{"type":"Feature","properties":{"name":"......etc
Вместо:
{"type":["FeatureCollection"],"features":[{"type":"Feature","properties":{"name":"......etc
Я не могу понять, почему в начале есть два экземпляра FeatureCollection или как создать только один.