嗨,我刚刚开始使用Json。我的问题是我想要以下形式的json数组
[ { "id" : "1", "name" : "India" },{ "id" : "2", "name" : "Pakistan" },{ "id" : "3", "name" : "China" },{ "id" : "4", "name" : "Japan" },{ "id" : "5", "name" : "Russia" } ]
我想要每个值的id和名称标题。然后最大的问题是,当我使用servlet将这个json发送到ajax时,我什么也得不到(使用此代码)
List<stateList> sl = new ArrayList<stateList>();//ststeList is getters n setters obj
sl.add(new stateList("1","India"));
Gson js = new Gson();
js.toJson(sl);
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(js.toString());
但如果我使用字符串对象,我会得到值,但没有标题,即(id,name)
{"1":"India","2":"Pak","3":"China"}
代码为
Map<String,String> m = new HashMap<String, String>();
m.put("1", "India");
m.put("2", "Pak");
m.put("3", "China");
String js = new Gson().toJson(m);
所以最后我想把最上面的json发送到ajax。ajax代码没有问题,它与这种类型的一起工作很好
使用entrySet
获取密钥。只需循环浏览条目
代码:
JsonParser p = new JsonParser();
JsonObject result = p.parse(file).getAsJsonObject();
Set<Map.Entry<String, JsonElement>> entrySet = result.entrySet();
for(Map.Entry<String, JsonElement> entry : entrySet) {
System.out.println(entry.getKey()); //this gives you the keys.
}
我希望这能帮助你
好吧,经过大量的努力,我得到了已经隐藏在我之前构建的类中的解决方案。
class stateList
{
private String id;
private String StateName;
stateList s;
public stateList(String id, String StateName)
{
this.id = id;
this.StateName = StateName;
}
public String toString() {
return "id = " +id+ ", stateName = " +StateName; //solution
}
}
只需调用stateList的toString();
//code 2 line 5
js = new Gson().toJson(sl.toString());