当前位置: 首页 > 知识库问答 >
问题:

使用Gson时出现奇怪的“NameValuePairs”键

景明诚
2023-03-14

我试图从一个对象的字段(我以JSOObject的形式获得这些字段)重新生成一个对象,如下所示:

JSONObject jObj = new JSONObject();  

JSONObject jObj1 = new JSONObject(); 
JSONObject jObj2 = new JSONObject(); 

JSONObject jObj21 = new JSONObject(); 
JSONObject jObj22 = new JSONObject(); 

jObj1.put("jObj11", "value11");
jObj1.put("jObj12", "value12");


jObj21.put("jObj211", "value211"); // level 2 
jObj21.put("jObj212", "value212");
jObj21.put("jObj213", "value213");

jObj22.put("jObj221", "value221");
jObj22.put("jObj222", "value222");
jObj22.put("jObj223", "value223");

jObj2.put("jObj21", jObj21);  // level 1 
jObj2.put("jObj22", jObj22);

jObj.put("jObj1", jObj1); // level 0 
jObj.put("jObj2", jObj2);

我使用这些行从obeject获取Json

GsonBuilder builder = new GsonBuilder();
Gson gSon = builder.create();
gSon.toJSon(jObj);

问题是当我用Gson解析主对象(jObj)时,我发现了一个名为“namevaluepairs”的额外键。我为什么要这把钥匙?

通知:

  • 如果我这样做:jobj.tostring();on Log,则此键消失。
  • 如果这样做:jobj.opt(“NameValuePairs”);结果为Null(就像没有名为“NameValuePairs”的键一样)。

这是我的实际结果:


共有1个答案

公羊学义
2023-03-14

尝试使用GSON的JSONObject而不是JSONObject,如下所示:

 JsonObject jObj = new JsonObject();

    JsonObject jObj1 = new JsonObject();
    JsonObject jObj2 = new JsonObject();

    JsonObject jObj21 = new JsonObject();
    JsonObject jObj22 = new JsonObject();

    jObj1.addProperty("jObj11", "value11");
    jObj1.addProperty("jObj12", "value12");


    jObj21.addProperty("jObj211", "value211"); // level 2
    jObj21.addProperty("jObj212", "value212");
    jObj21.addProperty("jObj213", "value213");

    jObj22.addProperty("jObj221", "value221");
    jObj22.addProperty("jObj222", "value222");
    jObj22.addProperty("jObj223", "value223");

    jObj2.add("jObj21", jObj21);  // level 1
    jObj2.add("jObj22", jObj22);

    jObj.add("jObj1", jObj1); // level 0
    jObj.add("jObj2", jObj2);

    String json = new Gson().toJson(jObj);
 类似资料:
  • 我在使用FPDF库生成pdf文件时得到了这个输出。 %PDF-1.3.0 obj 我的代码:

  • 问题内容: 我正在使用jmh 使用maven并按照http://openjdk.java.net/projects/code- tools中 建议的命令行方法对一个简单的应用程序进行基准测试。成功设置并建立基准后,我可以使用avgt模式获得以下基准结果: 我不确定如何解释此输出,但我确定某些地方出了错…?知道什么或如何调试吗? 问题答案: JMH输出使用扩展的Unicode字符。特别是, ?10

  • 问题内容: 我有这种方法,它使用字符串的可变参数,从中创建一个列表,然后尝试删除列表的第一个元素。 但是,一旦被调用,就会抛出一个。我的猜测是返回的List- Type不支持remove方法。我对么?我有什么选择? 问题答案: 仅在数组周围提供薄包装。该包装器使您可以使用API 对阵列执行 大多数 操作。JavaDoc的引文: 返回由指定数组支持的 固定大小的 列表。[…]此方法充当基于数组的AP

  • 问题内容: 我有这种方法,它使用字符串的可变参数,从中创建一个列表,然后尝试删除列表的第一个元素。 但是,一旦被调用,就会抛出一个。我的猜测是返回的List- Type不支持remove方法。我对么?我有什么选择? 问题答案: 仅在数组周围提供薄包装。该包装器使您可以使用API 对阵列执行 大多数 操作。JavaDoc的引文: 返回由指定数组支持的 固定大小的 列表。[…]此方法充当基于数组的AP

  • 我在打印报告时出现了一个奇怪的错误。

  • 问题内容: 我一直在使用PyCharm在PyQt中调试我的GUI。到目前为止,这确实非常成功,直到我在尝试调试gui时遇到一个奇怪的错误。我已经在脚本的开始以及各个点设置了一个断点,但是程序没有机会到达这一点。我也尝试删除所有断点并运行调试,但得到相同的结果。完整的回溯是: 有谁知道导致此错误的原因以及如何解决?当我正常运行代码(无需调试)时,不会遇到任何这些错误。 问题答案: 我遇到了同样的问题