-
Verschachteltes JSON mit SQL
Hallo zusammen.
Ich habe folgendes SQL:
EXEC SQL SELECT
json_object('Confirmation':
json_object(
'Datum': date, 'Header':
json_object(
'company': company,
'delivery_line': json_arrayagg(
json_object(
'package_number': trim(xpackage_no),
'country_of_origins': json_array(
json_object(
'country_of_origin': trim(country_from,
'quantity_picked': trim(quan))))))))
INTO :jsonfile
FROM qtemp/jsonout
group by company;
Bei folgenden Daten:
date |
company |
xpackage_no |
country_from |
quan |
20230901 |
123 |
12345 |
DE |
5 |
20230901 |
123 |
12345 |
AT |
1 |
bekomme ich folgendes JSON:
Code:
{
"Confirmation": {
"Datum": "20230901",
"Header": {
"company": "123 "
},
"delivery_line": [
{
"package_number": "12345",
"country_of_origins": [
{
"country_of_origin": "DE",
"quantity_picked": "5"
}
]
}
]
"delivery_line": [
{
"package_number": "12345",
"country_of_origins": [
{
"country_of_origin": "AT",
"quantity_picked": "1"
}
]
}
]
}
}
ich möchte das JSON aber folgendermaßen formatiert haben:
Code:
{
"Confirmation": {
"Datum": "20230901",
"Header": {
"company": "123 "
},
"delivery_line": [
{
"package_number": "12345",
"country_of_origins": [
{
"country_of_origin": "DE",
"quantity_picked": "5"
}
{
"country_of_origin": "AT",
"quantity_picked": "1"
}
]
}
]
}
}
Was muss ich dazu ändern? Irgendwie klappt das bei mir nicht.
Schon mal vielen Dank und Gruß
Sebastian
-
Bei "'Name' value" kann ein "(select...)" oder "JSON_OBJECT" wieder folgen.
https://www.ibm.com/docs/en/i/7.2?to...enerating-json
-
Hi,
es gibt ein Problem bei delivery_line: nach Company muss noch eine Klammer zu hinzugefügt werden..
Und zum Array:
Da kann man sich mit einem weiteren select + Json_arrayagg weiterhelfen. Sollte in etwa so aussehen:
Code:
json_object('Confirmation':
json_object(
'Datum': date, 'Header':
json_object(
'company': company),
'delivery_line': json_arrayagg(
json_object(
'package_number': trim(xpackage_no),
'country_of_origins':
(select json_arrayagg(
json_object(
'country_of_origin': trim(country_from),
'quantity_picked': trim(quan)
)
)
from qtemp/jsonout b
where a.date = b.date and
a.company = b.company and
a.xpackage_no = b.xpackage_no
) format json
))))
INTO :jsonfile
FROM qtemp/jsonout a
group by date, company;
-
Vielen Dank für die Antworten!
@xenofob
ich habe das so umgesetzt und bekomme nun aber folgendes raus (nicht wundern das die Werte nicht gleich sind. Im Beispiel oben hatte ich ausgedachte Felder und Werte und nun die aus einem Testauftrag):
Code:
"country_of_origins": "[{\"country_of_origin\":\"IT\",\"quantity_picked\":\"200\"},{\"country_of_origin\":\"SI\",\"quantity_picked\":\"10\"}]"
Der Inhalt sieht soweit erstmal gut aus aber es scheint, dass er das ganze nun als ein VALUE behandelt und nicht als JSON Format. Zumindest ist der ganze Teil in ""
Wo mache ich noch was falsch?
Gruß
Sebastian
-
Dafür ist die Syntax "format json" zuständig, das es als JSON hineingebettet wird.
-
Erstmal vielen dank! Das "format json" hat geholfen.
Jetzt habe ich nur noch ein Problem. Meine Ausgabe sieht jetzt folgendermassen aus:
Code:
{
"Confirmation": {
"Datum": "20230901",
"Header": {
"company": "123 "
},
"delivery_line": [
{
"package_number": "12345",
"country_of_origins": [
{
"country_of_origin": "DE",
"quantity_picked": "5"
}
{
"country_of_origin": "AT",
"quantity_picked": "1"
}
]
}
{
"package_number": "12345",
"country_of_origins": [
{
"country_of_origin": "DE",
"quantity_picked": "5"
}
{
"country_of_origin": "AT",
"quantity_picked": "1"
}
]
}
]
}
}
Heisst ich habe nun 2 mal diesen Block weil ich ja in der Datendatei 2 Sätze habe. Hab schon verschiedenes versucht aber er fasst mir diese nicht zusammen.
EDIT: Habe jetzt selbst eine Lösung gefunden, indem ich jeweils noch einen zusätzlichen Eintrag mit country_of_origin = *BLANK und quantity_picked = *BLANK hinzufüge und setze dann dem FROM qtemp/jsonout a ein WHERE country_of_origin = *BLANK und bei dem eingebettenten SELECT ein where country_of_orign <> *BLANK. Trotzdem würde mich noch eine saubere SQL Lösung interessieren.
Gruß
Sebastian
-
Das sollte nicht so aussehen.
Kannst du den aktuellen sql posten?
Similar Threads
-
By Andreas_Prouza in forum IBM i Hauptforum
Antworten: 10
Letzter Beitrag: 18-01-23, 14:30
-
By dschroeder in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 09-09-22, 12:23
-
By ismiavoiwuascht in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 17-10-21, 21:17
-
By Kerki in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 26-01-21, 09:46
-
By Armin in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 31-05-07, 11:38
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks