Dmitry Stolyarov Опубликовано 14 мая, 2019 Поделиться Опубликовано 14 мая, 2019 Подскажите, пжл, ка разобрать такой JSON: [ { "cities_id": "1", "cities_idpartner": "2", "cities_name": "москва" }, { "cities_id": "2", "cities_idpartner": "2", "cities_name": "москва2" } ][ { "prices_id": "1", "prices_name": "полный прайс", "prices_idpartner": "2", "prices_rub": "1000.00" }, { "prices_id": "2", "prices_name": "многодетные", "prices_idpartner": "2", "prices_rub": "750.00" } ][ ... несколько подобных запрос с разных таблиц в одном JSON Цитата Ссылка на комментарий
0 krapotkin Опубликовано 14 мая, 2019 Поделиться Опубликовано 14 мая, 2019 предположу что ][ - это точно не JSON Цитата Ссылка на комментарий
0 Dmitry Stolyarov Опубликовано 14 мая, 2019 Автор Поделиться Опубликовано 14 мая, 2019 2 минуты назад, krapotkin сказал: предположу что ][ - это точно не JSON не исключаю ошибки в формировании JSON.. (опыта нет) сам php: if ($DBResult = mysqli_query($DBLink, $query2)) { $ResultArray = array(); $Index = 0; while ($row = mysqli_fetch_array($DBResult, MYSQLI_ASSOC)){ $ResultArray[$Index] = $row; $Index++; } $ResultJSON = json_encode($ResultArray, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); echo $ResultJSON; mysqli_free_result($DBResult); } if ($DBResult = mysqli_query($DBLink, $query3)) { $ResultArray = array(); $Index = 0; while ($row = mysqli_fetch_array($DBResult, MYSQLI_ASSOC)){ $ResultArray[$Index] = $row; $Index++; } $ResultJSON = json_encode($ResultArray, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); echo $ResultJSON; mysqli_free_result($DBResult); } if ($DBResult = mysqli_query($DBLink, $query4)) { $ResultArray = array(); $Index = 0; while ($row = mysqli_fetch_array($DBResult, MYSQLI_ASSOC)){ $ResultArray[$Index] = $row; $Index++; } $ResultJSON = json_encode($ResultArray, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); echo $ResultJSON; mysqli_free_result($DBResult); } на выходе дает указанный выше формат Цитата Ссылка на комментарий
0 krapotkin Опубликовано 14 мая, 2019 Поделиться Опубликовано 14 мая, 2019 (изменено) вы просто без разделителей склеиваете три разных JSON-массива вам бы каждый из них описать отдельно. да и вообще принято логически законченные участки кода выделять в отдельные функции function GetValuesAsJson($query) { ..... } тогда будет например '{"Arr1":'. GetValuesAsJson($query1). ', "Arr2":'.GetValuesAsJson($query2).', "Arr3":'.GetValuesAsJson($query3).'}' ну и разбор полученного объекта например с помощью XSuperObject. Примеры есть на офсайте https://github.com/onryldz/x-superobject Изменено 14 мая, 2019 пользователем krapotkin Ingalime, Barbanel и Dmitry Stolyarov 3 Цитата Ссылка на комментарий
0 Dmitry Stolyarov Опубликовано 14 мая, 2019 Автор Поделиться Опубликовано 14 мая, 2019 1 час назад, krapotkin сказал: вы просто без разделителей склеиваете три разных JSON-массива вам бы каждый из них описать отдельно. да и вообще принято логически законченные участки кода выделять в отдельные функции function GetValuesAsJson($query) { ..... } тогда будет например '{"Arr1":'. GetValuesAsJson($query1). ', "Arr2":'.GetValuesAsJson($query2).', "Arr3":'.GetValuesAsJson($query3).'}' ну и разбор полученного объекта например с помощью XSuperObject. Примеры есть на офсайте https://github.com/onryldz/x-superobject krapotkin, спасибо! Публикую, может кому-то пригодится.. на стороне PHP: $query1 = "SELECT ... FROM `...`;"; $query2 = "SELECT ... FROM `...`;"; $query3 = "SELECT ... FROM `...`;"; $query4 = "SELECT ... FROM `...`;"; function GetValuesAsJson($query, $Link) { if ($DBResult = mysqli_query($Link, $query)) { $ResultArray = array(); $Index = 0; while ($row = mysqli_fetch_array($DBResult, MYSQLI_ASSOC)) { $ResultArray[$Index] = $row; $Index++; } $ResultJSON = json_encode($ResultArray, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); return $ResultJSON; mysqli_free_result($DBResult); } }; echo '{"Arr1":'. GetValuesAsJson($query1, $DBLink).', "Arr2":'.GetValuesAsJson($query2, $DBLink).', "Arr3":'.GetValuesAsJson($query3, $DBLink).', "Arr4":'.GetValuesAsJson($query4, $DBLink).'}'; mysqli_close($DBLink); на стороне delphi: xJS := SO(aJSON); with xJS.A['Arr1'] do // имя массива begin for j := 0 to length - 1 do begin xObj := O[j]; Memo1.Lines.Add(xObj.S['cities_name']); // собираем нужные данные ... end; Barbanel 1 Цитата Ссылка на комментарий
0 Евгений Корепов Опубликовано 16 мая, 2019 Поделиться Опубликовано 16 мая, 2019 Мимо проходил. Вот вам код на php (собираем все данные в один массив и энкодим в json) $QueryArray = array( "SELECT ... FROM `...`;", "SELECT ... FROM `...`;", "SELECT ... FROM `...`;", "SELECT ... FROM `...`;", ); $Index = 0; $ResultArray = array(); foreach ($QueryArray as $query) { if ($mysqli_result = mysqli_query($DBLink, $query)) while ($row = mysqli_fetch_array($mysqli_result, MYSQLI_ASSOC)) $ResultArray[$Index][] = $row; $Index++; } $ResultJSON = json_encode($ResultArray, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); echo $ResultJSON; Dmitry Stolyarov 1 Цитата Ссылка на комментарий
0 Dmitry Stolyarov Опубликовано 11 июня, 2019 Автор Поделиться Опубликовано 11 июня, 2019 (изменено) В 16.05.2019 в 22:06, Евгений Корепов сказал: Мимо проходил. Вот вам код на php (собираем все данные в один массив и энкодим в json) $QueryArray = array( "SELECT ... FROM `...`;", "SELECT ... FROM `...`;", "SELECT ... FROM `...`;", "SELECT ... FROM `...`;", ); $Index = 0; $ResultArray = array(); foreach ($QueryArray as $query) { if ($mysqli_result = mysqli_query($DBLink, $query)) while ($row = mysqli_fetch_array($mysqli_result, MYSQLI_ASSOC)) $ResultArray[$Index][] = $row; $Index++; } $ResultJSON = json_encode($ResultArray, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); echo $ResultJSON; Евгений, если использовать этот код, то как обратиться к массивам в делфи? у меня выборка из 4х таблиц, массивы в json не именованные. пример: [ [ { "statusactivity_id": "1", "statusactivity_name": "Запись на мастер-класс" }, { "statusactivity_id": "2", "statusactivity_name": "Мастер-класс пройден" }, { "statusactivity_id": "3", "statusactivity_name": "Активный" }, { "statusactivity_id": "4", "statusactivity_name": "Пауза" }, { "statusactivity_id": "5", "statusactivity_name": "Отказ" } ], [ { "cities_id": "1", "cities_idpartner": "2", "cities_name": "Москва" }, { "cities_id": "2", "cities_idpartner": "2", "cities_name": "Новосиб" }, { "cities_id": "4", "cities_idpartner": "2", "cities_name": "Владик" } ], Изменено 11 июня, 2019 пользователем Dmitry Stolyarov Цитата Ссылка на комментарий
0 slav_z Опубликовано 12 июня, 2019 Поделиться Опубликовано 12 июня, 2019 unit Unit9; interface uses System.JSON; procedure ReadData(const Data: string); implementation procedure ReadStatus(jsObject: TJSONObject); var ActivityId: Integer; ActivityName: string; begin ActivityId:=jsObject.GetValue<Integer>('statusactivity_id'); ActivityName:=jsObject.GetValue<string>('statusactivity_name'); end; procedure ReadStatusArray(jsArray: TJSONArray); var jsValue: TJSONValue; begin for jsValue in jsArray do ReadStatus(jsValue as TJSONObject); end; procedure ReadAnyArray(jsArray: TJSONArray); begin end; procedure ReadData(const Data: string); var jsArray: TJSONArray; begin jsArray:=TJSONObject.ParseJSONValue(Data) as TJSONArray; try ReadStatusArray(jsArray.Items[0] as TJSONArray); ReadAnyArray(jsArray.Items[1] as TJSONArray); ReadAnyArray(jsArray.Items[2] as TJSONArray); ReadAnyArray(jsArray.Items[3] as TJSONArray); finally jsArray.Free; end; end; end. Цитата Ссылка на комментарий
0 Dmitry Stolyarov Опубликовано 12 июня, 2019 Автор Поделиться Опубликовано 12 июня, 2019 а как это сделать c XSuperJSON? Цитата Ссылка на комментарий
0 krapotkin Опубликовано 12 июня, 2019 Поделиться Опубликовано 12 июня, 2019 arr:=SA(JSON); for i:=0 to arr.length-1 do arr2:=arr.a[i]; Dmitry Stolyarov 1 Цитата Ссылка на комментарий
Вопрос
Dmitry Stolyarov
Подскажите, пжл, ка разобрать такой JSON:
[
{
"cities_id": "1",
"cities_idpartner": "2",
"cities_name": "москва"
},
{
"cities_id": "2",
"cities_idpartner": "2",
"cities_name": "москва2"
}
][
{
"prices_id": "1",
"prices_name": "полный прайс",
"prices_idpartner": "2",
"prices_rub": "1000.00"
},
{
"prices_id": "2",
"prices_name": "многодетные",
"prices_idpartner": "2",
"prices_rub": "750.00"
}
][
... несколько подобных запрос с разных таблиц в одном JSON
Ссылка на комментарий
9 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.