簡體   English   中英

如何通過從Java中的String數組或ArrayList中獲取值來創建所需的JSON結構?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM