取决于输入json数组在spring mvc

时间:2015-06-26 12:00:49

标签: json spring 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格式输出我的输出,如上所示。 我尝试了一些东西,但未能获得所需的输出。

1 个答案:

答案 0 :(得分: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();