Java Json объект в Json преобразование массива - PullRequest
0 голосов
/ 11 июля 2020

Я новичок в java. Я пытаюсь получить данные из хранимой процедуры и преобразовать их в массив json. Но у меня возникли проблемы с моим кодом.

           /*** Get data from stored procedure ***/
           Map<String, Object> out =  simpleJdbcCall.execute(in);
           /*** Convert to JSONObjects ***/
           JSONObject jsonRes = new JSONObject();
           jsonRes.put("body", out.get("#result-set-1"));
           System.out.println(out.get("#result-set-1"));

output :

          [{user_id=484, user_name="abc", email=null, contact_no=123456789}, 
           {user_id=485, user_name=xyz, email=null, contact_no=235612354}]

Expected output :

          {
            "body":
                "Data":{
                        {
                         {user_id=484, user_name="abc", email=null, contact_no=123456789},
                         {user_id=485, user_name=xyz, email=null, contact_no=235612354}
                        }
                       }
           }   

Ответы [ 3 ]

1 голос
/ 11 июля 2020

Попробуйте использовать HashMap. Вы можете вложить столько элементов (HashMaps), сколько захотите. Вот пример

Map<String, Object> out =  simpleJdbcCall.execute(in);    
Map<String, Object> users = new HashMap<String, Object>();

users.put( "0", out.get("#result-set-1") );
        
Map<String, Object> data = new HashMap<String, Object>();
data.put( "Data", users );
Map<String, Object> body = new HashMap<String, Object>();
body.put( "body", data );
       
JSONObject json = new JSONObject();
json.putAll( body );
System.out.printf( "JSON: %s", json.toString(2) );
0 голосов
/ 11 июля 2020

Вы также можете использовать ObjectMapper (Jackson)

String output = <Stored_Procedure_Output>;
ObjectMapper objectMapper = new ObjectMapper();
ArrayNode arrayNode = objectMapper.readValue(output, ArrayNode.class);
for(int i=0;i<arrayNode.size;i++){
   JsonNode obj = arrayNode.get(i);
   // You can use the obj to retrieve each object
}
0 голосов
/ 11 июля 2020

В последней строке выведите jsonRes вместо out.get("#result-set-1"):

System.out.println(jsonRes);

Тогда вы увидите что-то более близкое к тому, что вы ожидаете, вероятно, очень похожее на:

{
 "body": [
   {user_id=484, user_name="abc", email=null, contact_no=123456789},
   {user_id=485, user_name=xyz, email=null, contact_no=235612354}
 ]
}   

Если это так, то body - это JsonArray

...