powered by simpleCommunicator - 2.0.28     © 2024 Programmizd 02
Map
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Генерация JSON файла
7 сообщений из 7, страница 1 из 1
Генерация JSON файла
    #39975887
hum_i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно сформировать JSON файл в таком виде примерно
{
{
"date":"2020-06-29",
"clientId":"fggh54566",
"offer":1111
},
{
"date":"2020-06-30",
"clientId":"jjfjr2566",
"offer":2222
}
}
Пробую сделать так

ll_count = lds.RowCount()

For ll_row = 1 To ll_count
ll_root = lnv_JsonGenerator.CreateJsonObject( )

ls_date = lds.GetItemString( ll_row, 'date' )
ls_client = lds.GetItemString( ll_row, 'client' )
ll_offer = lds.GetItemNumber( ll_row, 'offer' )

lnv_JsonGenerator.AddItemString( ll_root, "date", ls_date )
lnv_JsonGenerator.AddItemString( ll_root, "clientId", ls_client )
lnv_JsonGenerator.AddItemNumber( ll_root, "offer", ll_offer )
NEXT

Но по факту получаю одну строку, хотя по факту должно быть 2 строки

{"date":"2020-06-29","clientId":"fggh54566","offer":1111}

Помогите пожалуйста как правильно сделать
...
Рейтинг: 0 / 0
Генерация JSON файла
    #39976101
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hum_i,

Возможно потому что json не допускает такой синтаксис:
{ {...}, {...}, ... }.
Для повторяющихся элементов применяются массивы:
[ {...}, {...}, ... ]

Вам надо для каждой строки DS создавать объект и добавлять его в массив

Что-то типа этого:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
ll_RootArray = lnv_JsonGenerator.CreateJsonArray()

For ll_row = 1 To ll_count
ll_obj = lnv_JsonGenerator.AddItemObject(ll_RootArray)

ls_date = lds.GetItemString( ll_row, 'date' )
ls_client = lds.GetItemString( ll_row, 'client' )
ll_offer = lds.GetItemNumber( ll_row, 'offer' )

lnv_JsonGenerator.AddItemString( ll_obj, "date", ls_date )
lnv_JsonGenerator.AddItemString( ll_obj, "clientId", ls_client )
lnv_JsonGenerator.AddItemNumber( ll_obj, "offer", ll_offer )
NEXT
...
Рейтинг: 0 / 0
Генерация JSON файла
    #39976871
osxl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hum_i
Нужно сформировать JSON файл в таком виде примерно
{ ...
... }
Пробую сделать так
Код: sql
1.
2.
3.
4.
For ll_row = 1 To ll_count
	ll_root = lnv_JsonGenerator.CreateJsonObject( )
	...
NEXT


Но по факту получаю одну строку, хотя по факту должно быть 2 строки
А вам не кажется что
Код: sql
1.
ll_root = lnv_JsonGenerator.CreateJsonObject( )

нужно вынести из цикла. Вы каждый раз в цикле создаете JsonObject. Не удивительно что у вас по факту в json файле только первая строка.
...
Рейтинг: 0 / 0
Генерация JSON файла
    #39981768
hum_i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky
hum_i,

Возможно потому что json не допускает такой синтаксис:
{ {...}, {...}, ... }.
Для повторяющихся элементов применяются массивы:
[ {...}, {...}, ... ]

Вам надо для каждой строки DS создавать объект и добавлять его в массив

Что-то типа этого:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
ll_RootArray = lnv_JsonGenerator.CreateJsonArray()

For ll_row = 1 To ll_count
ll_obj = lnv_JsonGenerator.AddItemObject(ll_RootArray)

ls_date = lds.GetItemString( ll_row, 'date' )
ls_client = lds.GetItemString( ll_row, 'client' )
ll_offer = lds.GetItemNumber( ll_row, 'offer' )

lnv_JsonGenerator.AddItemString( ll_obj, "date", ls_date )
lnv_JsonGenerator.AddItemString( ll_obj, "clientId", ls_client )
lnv_JsonGenerator.AddItemNumber( ll_obj, "offer", ll_offer )
NEXT



Все равное все выводит в одну строку

[{"date":"2020-07-06","clientId":"lpoi59696","offer":"5552"},{"date":"2020-07-06","clientId":"kpkpp88","offer":"56688"}...]
А должно быть так
[
{
"date":"2020-07-06",
"clientId":"lpoi59696",
"offer":"5552"},
{
"date":"2020-07-06",
"clientId":"kpkpp88",
"offer":"56688"
}
...
]
...
Рейтинг: 0 / 0
Генерация JSON файла
    #39982133
hum_i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hum_i
Anatoly Moskovsky
hum_i,

Возможно потому что json не допускает такой синтаксис:
{ {...}, {...}, ... }.
Для повторяющихся элементов применяются массивы:
[ {...}, {...}, ... ]

Вам надо для каждой строки DS создавать объект и добавлять его в массив

Что-то типа этого:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
ll_RootArray = lnv_JsonGenerator.CreateJsonArray()

For ll_row = 1 To ll_count
ll_obj = lnv_JsonGenerator.AddItemObject(ll_RootArray)

ls_date = lds.GetItemString( ll_row, 'date' )
ls_client = lds.GetItemString( ll_row, 'client' )
ll_offer = lds.GetItemNumber( ll_row, 'offer' )

lnv_JsonGenerator.AddItemString( ll_obj, "date", ls_date )
lnv_JsonGenerator.AddItemString( ll_obj, "clientId", ls_client )
lnv_JsonGenerator.AddItemNumber( ll_obj, "offer", ll_offer )
NEXT



Все равное все выводит в одну строку

[{"date":"2020-07-06","clientId":"lpoi59696","offer":"5552"},{"date":"2020-07-06","clientId":"kpkpp88","offer":"56688"}...]
А должно быть так
[
{
"date":"2020-07-06",
"clientId":"lpoi59696",
"offer":"5552"},
{
"date":"2020-07-06",
"clientId":"kpkpp88",
"offer":"56688"
}
...
]

Может это связяно с записью в JSON файл?
lnv_JsonGenerator.SaveToFile( ls_filename )

Т.е. я выполняю эту команду уже после цикла. А может это нужно делать как то внутри цикла?
...
Рейтинг: 0 / 0
Генерация JSON файла
    #39983112
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hum_i
Все равное все выводит в одну строку

[{"date":"2020-07-06","clientId":"lpoi59696","offer":"5552"},{"date":"2020-07-06","clientId":"kpkpp88","offer":"56688"}...]
А должно быть так
[
{
"date":"2020-07-06",
"clientId":"lpoi59696",
"offer":"5552"},
{
"date":"2020-07-06",
"clientId":"kpkpp88",
"offer":"56688"
}
...
]


Json-у все равно, в одну строку или в несколько. Это одно и тоже.
...
Рейтинг: 0 / 0
Генерация JSON файла
    #39983135
hum_i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky
hum_i
Все равное все выводит в одну строку

[{"date":"2020-07-06","clientId":"lpoi59696","offer":"5552"},{"date":"2020-07-06","clientId":"kpkpp88","offer":"56688"}...]
А должно быть так
[
{
"date":"2020-07-06",
"clientId":"lpoi59696",
"offer":"5552"},
{
"date":"2020-07-06",
"clientId":"kpkpp88",
"offer":"56688"
}
...
]


Json-у все равно, в одну строку или в несколько. Это одно и тоже.

Ясно спасибо)
значит можно отправлять в таком виде файлы
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Генерация JSON файла
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]