I'm trying to generate a 2d JSON array using JSON object in Java. I'm trying to generate the following JSON.
Java Code..
JSONObject root = new JSONObject();
JSONObject c0 = new JSONObject();
JSONObject c1 = new JSONObject();
JSONObject attachment = new JSONObject();
JSONObject payload = new JSONObject();
JSONObject buttons = new JSONObject();
root.put("recipient", c0);
root.put("message", c1);
c0.put("id", userId);
c1.put("message", attachment);
attachment.put("type", "template");
attachment.put("payload", payload);
payload.put("template_type", "button");
payload.put("text", "What do you want to do next");
payload.put("buttons", buttons);
buttons.put("type", "web_url");
buttons.put("url", "https://google.com");
buttons.put("title", "show website");
buttons.put("type", "postback");
buttons.put("title", "Hi There");
buttons.put("payload", "sample payload");
Expected JSON Output..
{
"recipient":{
"id":"USER_ID"
},
"message":{
"attachment":{
"type":"template",
"payload":{
"template_type":"button",
"text":"What do you want to do next?",
"buttons":[
{
"type":"web_url",
"url":"https://google.com",
"title":"Show Website"
},
{
"type":"postback",
"title":"Start Chatting",
"payload":"Sample_PAYLOAD"
}
]
}
}
}
}
Current Output..
{
"recipient":{"
id":"988459377921053"
},
"message":{
"message":{"
payload":{
"buttons":{
"payload":"sample payload",
"type":"postback",
"title":"Hi There",
"url":"https://google.com"
},
"template_type":"button",
"text":"What do you want to do next"},
"type":"template"
}
}
}
I'm creating nested Json objects and adding them from the outer level to the inner level still the output JSON is not as expected. Can't understand where I'm going wrong.
Edit 1:
Tried changes mentioned by user @user1802604 but the JSON being generated is of the following format..
{
"recipient":{
"id":"988459377921053"
},
"message":{
"attachment":{
"payload":{
"buttons":[
{
"payload":"sample payload",
"type":"postback",
"title":"Hi There",
"url":"https://google.com"
},
{
"payload":"sample payload",
"type":"postback",
"title":"Hi There",
"url":"https://google.com"
}
],
"template_type":"button",
"text":"What do you want to do next"
},
"type":"template"
}
}
}
The API to which I'm sending the JSON is returning response code 400 with message "Bad Request". Is there a way to preserve the order of elements??
JSONObject buttons = new JSONObject();should be aJSONArrayholdingJSONObject