让Json标题为json数组而不使用pojo,bean或getter和setter

时间:2016-07-28 16:13:00

标签: java json servlets gson

您好我刚刚开始使用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代码没有问题它的工作正常#/ p>

2 个答案:

答案 0 :(得分:1)

使用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.
}

我希望这有助于你

答案 1 :(得分:1)

好好辛苦劳作之后,我得到的解决方案已隐藏在我之前构建的类中。

 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&#39; sString();

         //code 2 line 5
    js = new Gson().toJson(sl.toString());