Как мне создать желаемую структуру JSON, взяв значения из массива String или ArrayList в Java? - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь создать желаемую структуру json в java, но я получаю только последнее значение в структуре json, так как я создаю 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 "};

        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"
        }
      ]
    }
  ]
}

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

Ваша конструкция 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)); 
}
0 голосов
/ 30 мая 2018

Вы должны использовать один цикл, Предположим, что каждый массив имеет одинаковую длину , следующий код может помочь вам

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));
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...