- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-26-2023 09:22 AM
I need helping parsing out a sample JSON payload. I want to parse the sample payload into the proc_po, proc_po_item tables.
{
"purchaseOrderDetails": [
{
"purchaseOrderNumber": "DELL-88888",
"purchaseOrderDate": "2022-11-21T22:14:52Z",
"purchaseOrderStatus": "Shipped",
"dellOrders": [
{
"orderNumber": "565433333",
"dellPurchaseId": "2009428666666",
"orderStatus": "Shipped",
"statusDateTime": "2022-11-24T20:44:49Z",
"productInfo": [
{
"skuNumber": "210-AZYQ",
"description": "PowerEdge R750xs Server",
"itemQuantity": "2",
"serviceTags": [
"BB7HST5",
"CS7TGT5"
]
}
],
"invoiceNumber": null,
"invoiceDate": null,
"actualShipmentDate": "2022-11-24T20:34:02Z",
"actualDeliveryDate": null,
"estimatedShipmentDate": "2022-12-29T00:00:00Z",
"estimatedDeliveryDate": "2023-01-05T06:00:00Z",
"revisedShipmentDate": "2022-11-25T10:47:20Z",
"revisedDeliveryDate": "2022-11-30T10:47:20Z",
"revisedEstimatedOrDeliveryDateChange": false,
"trackingInformation": [
{
"carrierName": "FEDEX GROUND",
"waybill": "613947999999",
"carrierMileStone": "LABEL CREATED",
"carrierTrackingURL": "https://www.fedex.com/fedextrack/?trknbr=613947999999",
"milestoneStatusChange": false,
"milestoneEventDescription": "Shipment Acknowledged"
},
{
"carrierName": "FEDEX GROUND",
"waybill": "613947999999",
"carrierMileStone": null,
"carrierTrackingURL": "https://www.fedex.com/fedextrack/?trknbr=613947999999",
"milestoneStatusChange": false,
"milestoneEventDescription": null
}
],
"shipToInformation": {
"companyName": "COMPANY INC",
"contactName": "JOHN SMITH",
"contactAddress1": "ADDRESS LINE 1",
"contactAddress2": null,
"city": "HOUSTON",
"stateProvince": "Texas",
"postalCode": "77015-6586",
"country": "United States"
},
"purchaseOrderLines": [
{
"lineNumber": "1",
"buyerPartNumber": "3000134444444.1",
"dellPartNumber": "3000134444444.1",
"description": null,
"unitPrice": 8516.85,
"quantityOrdered": "2",
"lineStatus": "Shipped"
}
]
}
]
}
]
}
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-26-2023 09:42 AM
Hello,
the sample code would look something like below;-
if (response.getStatusCode() == 200) {
var data = JSON.parse(responseBody);
for (var i = 0; i < data.purchaseOrderDetails.length; i++) {
var incident = data.result[i];
var fieldname1 =incident.purchaseOrderNumber
}
} else {
gs.error("Failed to retrieve incident data: " + response.getErrorMessage());
}
Please refer the below article for the same:-
https://www.saaswithservicenow.in/post/how-to-parse-a-json-response-in-servicenow
Please mark my answer as correct based on Impact.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-26-2023 09:42 AM
Hello,
the sample code would look something like below;-
if (response.getStatusCode() == 200) {
var data = JSON.parse(responseBody);
for (var i = 0; i < data.purchaseOrderDetails.length; i++) {
var incident = data.result[i];
var fieldname1 =incident.purchaseOrderNumber
}
} else {
gs.error("Failed to retrieve incident data: " + response.getErrorMessage());
}
Please refer the below article for the same:-
https://www.saaswithservicenow.in/post/how-to-parse-a-json-response-in-servicenow
Please mark my answer as correct based on Impact.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-27-2023 06:32 PM
With the payload above, it recognized it as object and not as array. This is what I did and it is now working.
var parsedData = request.body.data;
// Ensure parsedData has the purchaseOrderDetails property and it's an array
if (!parsedData.hasOwnProperty('purchaseOrderDetails') || !Array.isArray(parsedData.purchaseOrderDetails)) {
throw new Error("purchaseOrderDetails property is not an array");
}
var ordersArray = parsedData.purchaseOrderDetails;

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-20-2024 09:38 AM - edited 02-20-2024 09:42 AM
Hi I am having similar issues parsing content returned by an API.
the content looks as below and I am trying to only return what is after "result" (in italic) with no success (albeit using the approach above. Any pointers welcome.
response body:
{"output":{"result":"laying down harmonised rules on artificial intelligence","source_documents":[{"page_content":"Text proposed by the Commission Amendment\n3. Where high-risk AI systems are \nsubject to other Union harmonisation \nlegislation which also requires an EU \ndeclaration of conformity, a single EU","metadata":{"page":231,"source":"https://www.europarl.europa.eu/doceo/document/TA-9-2023-0236_EN.pdf"},"type":"Document"},{"page_content":"a regulation of the European Parliament and of the Council on laying down harmonised \nrules on artificial intelligence (Artificial Intelligence Act) and amending certain Union","met
My code:
(function execute(inputs, outputs) {
if (inputs.status_code == '200'){
var data = JSON.parse(inputs.response_body);
for (var i = 0; i < data.output.length; i++) {
var result_var = data.result[i];
}
} else {
gs.error("Failed to retrieve message data: " + response.getErrorMessage());
}
// Map the parsed responseBody values to output variables
outputs.llm_response = result_var;
})(inputs, outputs);