我的控制器
@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 :(得分: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();