[英]How do i create desired JSON structure by taking values from a String array or ArrayList in java?
我嘗試在Java中創建所需的json結構,但由於我在for循環之外創建json,所以我僅在json結構中得到了最后一個值。 如果我在嵌套的for循環中創建它,則它沒有給我所需的json結構。
我的代碼在這里:
public static void main(String[] args) {
JSONObject TP1 = new JSONObject();
String[] alias = {"topping","cake"};
String[] entityType = {"Topping","cake"};
String[] textString = {"pizza","pancake"};
String[] usersays_text = {"I want ","I want "};
for(String usy:usersays_text)
{
TP1.put("text",usy.toString());
}
JSONObject TP2 = new JSONObject();
for(String tS:textString)
{
TP2.put("text",tS.toString());
}
for(String eT:entityType)
{
TP2.put("entityType",eT.toString());
}
for(String al:alias)
{
TP2.put("alias",al.toString());
}
JSONArray JSA=new JSONArray();
JSA.put(TP1);
JSA.put(TP2);
JSONObject root1= new JSONObject();
root1.put("parts", JSA);
JSONArray JSA4=new JSONArray();
JSA4.put(root1);
JSONObject root3= new JSONObject();
root3.put("TP", JSA4);
//To print
JSONObject json = new JSONObject(root3.toString()); // Convert text to object
System.out.println(json.toString(4));
}
這導致我遵循json結構 :-
{
"TP": [{
"parts": [{
"text": "I want "
},
{
"entityType": "cake",
"alias": "cake",
"text": "pancake"
}
]
}]
}
字符串數組的每個值所需的結構- 例如:
{
"TP": [
{
"parts": [
{
"text": "I want "
},
{
"alias": "topping",
"text": "pizza",
"entityType": "Topping"
}
]
},
{
"parts": [
{
"text": "I want "
},
{
"alias": "cake",
"entityType": "cake",
"text": "pancake"
}
]
}
]
}
您必須使用單循環, 假設每個數組的長度相同 ,以下代碼可以為您提供幫助
public static void main(String[] args) throws Exception {
String[] alias = {"topping", "cake"};
String[] entityType = {"Topping", "cake"};
String[] textString = {"pizza", "pancake"};
String[] usersays_text = {"I want ", "I want "};
JSONArray parts = new JSONArray();
for (int i = 0; i < usersays_text.length; i++) {
JSONArray JSA = new JSONArray();
JSONObject TP1 = new JSONObject();
TP1.put("text", usersays_text[i]);
JSONObject TP2 = new JSONObject();
TP2.put("text", textString[i]);
TP2.put("entityType", entityType[i]);
TP2.put("alias", alias[i]);
JSA.put(TP1);
JSA.put(TP2);
parts.put( JSA);
}
JSONObject partsObject = new JSONObject();
partsObject.put("parts",parts);
JSONObject root= new JSONObject();
root.put("trainingPhrases", partsObject);
//To print
JSONObject json = new JSONObject(root.toString()); // Convert text to object
System.out.println(json.toString(4));
}
您的jsonobject構造錯誤。 在'jsonobject'中,鍵是唯一的 ,
當你這樣嘗試時
for(String usy:usersays_text)
{
TP1.put("text",usy.toString());
}
json對象中存在相同的鍵,並且值被替換 。
請嘗試以下代碼,它會按預期構造json對象。
public static void main(String args[]) {
JSONObject TP1 = new JSONObject();
String[] alias = {"topping","cake"};
String[] entityType = {"Topping","cake"};
String[] textString = {"pizza","pancake"};
String[] usersays_text = {"I want ","I want "};
JSONObject jobj = new JSONObject();
JSONArray jarr = new JSONArray();
for(int index = 0; index < usersays_text.length; index++)
{
JSONObject parts = new JSONObject();
JSONArray partsArr = new JSONArray();
JSONObject partsObj = new JSONObject();
partsObj.put("text", usersays_text[index].toString());
JSONObject cont = new JSONObject();
cont.put("alias", alias[index].toString());
cont.put("text", textString[index].toString());
cont.put("entityType", entityType[index].toString());
partsArr.put(partsObj);
partsArr.put(cont);
parts.put("parts", partsArr);
jarr.put(parts);
}
jobj.put("trainingPhrases", jarr);
System.out.println(jobj.toString(4));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.