2013-12-05 18 views
0

У меня есть JSON формата нижеПреобразование JSON в другой формат

{ 
"results": 
[ 
    { 
     "position": {"Field1":11,"Filed2":12}, 
     "Field3":13, 
     "Filed4":14, 
     "Field5":15 
    }, 

    { 
     "position":{"Field1":21,"Filed2":22}, 
     "Field3":23, 
     "Filed4":24, 
     "Filed5":25 
    } 

] 
} 

Преобразование ниже формат

{ 
"results": 
[ 
    { 
     "Field1":11, 
     "Filed2":12, 
     "Field3":13, 
     "Filed4":14, 
     "Field5":15 
    }, 

    { 
     "Field1":21, 
     "Filed2":22, 
     "Field3":23, 
     "Filed4":24, 
     "Filed5":25 
    } 

] 
} 

Я пытаюсь ниже кода есть ли лучший способ справиться с этой

for(int i = 0; i<resultsJSONArray.length(); ++i){ 
     if(resultsJSONArray.get(i).has("position")) { 
       String names[] = JSONObject.getNames(resultsJSONArray.get(i).get("position"))); 
       for(int i = 0; i<names().length; ++i) {          
        resultsJSONArray.get(i).put(names[i],resultsJSONArray.get(i).get("position").get(names[i])); 
       } 
       JSONObject.getNames(resultsJSONArray.get(i).remove("position")); 
     } 
    } 
+0

Это работает? Если нет, что не работает? –

+2

Мое решение для этого было бы разобрать его на объект Java с помощью GSON или Jackson .. затем создать новый объект Java в соответствии с новым макетом .. а затем переконвертировать его обратно в JSON .. – AurA

ответ

0
class SourceJSON{ 
// define data model for original json format 
} 

class DestJSON{ 
// define data model for required json format 
} 

// тогда, наконец, вы можете конвертировать t исходный исходный код для класса данных, отформатировать его и записать обратно в формат json

SourceJSON data = new Gson().fromJson(json, SourceJSON.class); 
    DestJSON destdata = new DestJSON(); 
    destdata.setField(data.get(..)); 

    Gson gson = new Gson(); 
    String json = gson.toJson(destdata); 
Смежные вопросы