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

当JSON包含字符串或键的jsonobject时,Gson解析失败

贲招
2023-03-14

在我的Android应用程序中,我从web服务得到了一个响应。web服务将响应返回为

{
  "Result": -1,
  "Message": "E-mail/Mobile number or password is wrong, make sure your Mobile Number is entered with country code.",
  "MessageType": 2,
  "ResponseData": ""
}
{
  "Result": -1,
  "Message": "E-mail/Mobile number or password is wrong, make sure your Mobile Number is entered with country code.",
  "MessageType": 2,
  "ResponseData": {...}
}

也就是说,对于“ResponseData”,值要么是string要么是JSONObject。

我在用Gson进行解析。

我编写了用于解析的POJO类

    public class LoginResponse {
        @SerializedName("Result")
        @Expose
        private Integer result;
        @SerializedName("Message")
        @Expose
        private String message;
        @SerializedName("MessageType")
        @Expose
        private Integer messageType;
        @SerializedName("ResponseData")
        @Expose
        private ResponseData responseData;
 public class ResponseData {
...
}

    }
gsonObject.fromJson(decodeString(response.body().getOutput()), LoginResponse.class);

注意:decodeString()方法给出了上面指定的json对象。

共有1个答案

聂建茗
2023-03-14

对于一个键responseData,在响应中可以是stringresponseData,但是类只能接受responseData

我建议返回null而不是空字符串,然后检查responsedata==null

 类似资料:
  • 问题内容: 我正在尝试使用具有库重复键的无效结构解析json 。如果json中有重复的键,我想将它们提取为。 我要解析的示例(我要解析的实际json来自json导出): 但是,由于此json具有重复键,因此仅保留了最后一个值: 我也试过了具有支持的模块,但是它不能像预期的那样用于嵌套json对象。 将Guava模块用于之前显示的json的示例: 我应该如何使用库解决此问题?是否还有其他支持Java

  • 我有一些对象类对象的json字符串表示 我有json {“classItem”:“smpb.utility.classes.SMPBBaseObjectsList”,“dataItemsClass”:“smpb.base.classes.SMPBUser”,“dataSliceCode”:“012013”,“data”:[{“id”:137404611751070000,“Name”:“Test3

  • 问题内容: 有一个node.js应用程序正在接收包含文字NaN的JSON数据字符串,例如 这在Node.js中崩溃。如果可以,我想解析它。 我知道这不是JSON规范的一部分。大多数SO链接(在json中发送NaN812/sending- nan-in-json))建议修复输出。 在这里,尽管数据是在我无法控制的服务器中生成的,但是它是由一个商业Java库提供的,我可以在其中查看源代码。它是由Goo

  • 无法弄清楚如何将以下带有GSON的JSON字符串解析为任何适当的对象以检索其数据。字符串是: 我发现方括号表示它是一个ArrayList,但里面还有另一个对象。 如果我试着在ArrayList上搜索: 然后它抱怨: 如果我尝试相反的方法: 然后它也在抱怨: 不理解该格式:-/ 感谢您的任何建议!

  • 问题内容: 我正在构建一个模拟器,以将JSON数据发布到正在运行的服务中。 JSON应该如下所示: 我在Chrome中使用“高级REST客户端”进行了尝试,效果很好。ServiceStack Web服务会正确解析日期获取。 因此,关键是编写一个传感器模拟器,将这样的数据发布到Web服务。 我用Java创建了它,因此可以在树莓派上运行它。 这是代码: 该程序的输出如下: 这里的问题是JSONObje

  • 本文向大家介绍Android中gson、jsonobject解析JSON的方法详解,包括了Android中gson、jsonobject解析JSON的方法详解的使用技巧和注意事项,需要的朋友参考一下 JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据