【问题标题】:add a property to a Json array with Gson使用 Gson 将属性添加到 Json 数组
【发布时间】:2018-10-14 20:22:54
【问题描述】:

我正在使用 Gson 序列化一个对象列表,如下所示:

String responseMessage = new Gson().toJson(pages.get(pagenumber));

我想添加另一个要在 javascript 中读取但与列表无关的属性:

{"numberofpages":x}

我试过这个:

    JsonElement responsemessage = new Gson().toJsonTree(pages.get(pagenumber));
   JsonObject message = (JsonObject) responsemessage;
   message.addProperty("numberofpages",numberofpages);

...但我不能,因为responsemessage 是一个 JSONArray。如何在 responseMessage 的这个 String 版本中编码更多信息,以便在 javascript 中读取:

$.get("/lod1/Data",{pagenumber: page},function(list){
      console.log(list);
      //???
      //if(list.numberofpages == 5){

       // }

        $.each(list,function(index,card){
           $("#questionsforsets").append('<tr><td class="questioncell"><div class="longtexttd">'+card.card+'</div></td><td>'+card.category+'</td><td>'+card.made+'</td><td>'+card.missed+'</td></tr>'); 
        });
  },"json");

【问题讨论】:

    标签: javascript json gson


    【解决方案1】:

    好吧,正如您所发现的,您无法将属性添加到 JSON 数组。

    如果你的responsemessage 是一个数组,并且你需要传递另一个值,你应该把这个数组和那个值放入一个新对象中。像这样的东西应该可以工作:

    JsonObject responseObject = new JsonObject();
    responseObject.addProperty("pages", responsemessage);
    responseObject.addProperty("numOfPages", numberOfPages);
    

    (当然,您处理此响应的 JS 代码需要相应调整)

    【讨论】:

    • 酷,所以要访问该列表,它将是: $.each(list.pages,... 正确?
    • 嗯,是的(我会将list 重命名为response,因为它不再是一个列表)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    • 2018-03-09
    • 1970-01-01
    相关资源
    最近更新 更多