2015-06-26 57 views
0

我控制器取決於字面JSON輸入JSON數組返回輸出JSON Spring MVC中

@Controller 
public class HomeController { 
@RequestMapping(value = "/trans", method = RequestMethod.POST) 
public @ResponseBody String jsontest(@RequestBody String transjson) throws JsonProcessingException, IOException, JSONException { 

    try{ 

    JsonParser parser = new JsonParser(); 
    parser.parse(transjson); 
    String output = null; 
    JSONObject obj1 = new JSONObject(transjson); 

    int size=obj1.getJSONArray("inArray").length(); 

    /* this is where I need help.*/ 

    for(int i=0;i<size;i++){ 
    output="{\"outArray\":[{\"in\":\""+obj1.getJSONArray("inArray").get(i)+"\",\"out\":\"hie\"}]}"; 

    } 
    return output; 


    } 
    catch(JsonSyntaxException ex) 
    { 
     System.out.println(ex.getMessage()); 
     return "{\"message\":\"Invalid JSON\"}"; 
    } 
    catch(Exception ex) 
    { 
     System.out.println(ex.getMessage()); 
     return "{\"message\":\"Exception occured\"}"; 
    } 
} 

} 

我要的是,如果我輸入JSON是

{ 
"inArray": [ 
    "first" 
] 
} 

那麼我的輸出應該是

{ 

"outArray": [ 
{ 
    "in": "first", 
    "out": "hie" 
} 
] 
} 

如果我的輸入JSON是

{ 
"inArray": [ 
    "first", 
    "second" 
] 
} 

那麼我的輸出應該是

{ 
"outArray": [ 
    { 
     "in": "first", 
     "out": "hie" 
    }, 
    { 
     "in": "second", 
     "out": "hie" 
    } 
] 
} 

意味着我不知道在輸入JSON輸入數組中元素的個數。我需要在輸入元素數字的基礎上以字面json格式輸出,如上所示。 我嘗試了一些東西,但一直未能得到所需的輸出。

回答

0

我已經能夠做到這一點。 其實我試圖讓字符串對象,而不是如果我讓jsonobject並將所有內容,並在最後返回該jsonobject.tostring()窗體,然後可以獲得所需的結果。

int size=obj1.getJSONArray("inArray").length(); 
JSONArray ja = new JSONArray(); 
    for(int i=0;i<size;i++){ 
     JSONObject jo = new JSONObject(); 
     jo.put("in", obj1.getJSONArray("inArray").get(i)); 
     jo.put("out", "hie"); 
     ja.put(jo); 
    } 


    JSONObject mainObj = new JSONObject(); 
    mainObj.put("outArray", ja); 
    return mainObj.toString();