java - 使用 GSON(或任何其他库)将 JSON 转换为 Java/Scala -> Bean 结构不清楚

标签 java json scala gson

我有这个 JSON 字符串:

    {
  "totalSize" : 2,
  "done" : true,
  "records" : [ {
    "attributes" : {
      "type" : "Article__c",
      "url" : "/services/data/v20.0/sobjects/Article__c/a01d00000030gSxAAI"
    },
    "Name" : "ABC - Fri Mar 30 01:54:57 CEST 2012"
  }, {
    "attributes" : {
      "type" : "Article__c",
      "url" : "/services/data/v20.0/sobjects/Article__c/a01d00000030gSaAAI"
    },
    "Name" : "XYZ - Fri Mar 30 01:52:25 CEST 2012"
  } ]
}

我需要一个 Java 对象来获取键的值。我尝试使用 Gson(但另一个简单的解决方案也可以)。我认为 bean 的结构应该是这样的:

case class AttributeBean(typ: String, url: String)
case class RecordBean(attributes: List[AttributeBean], name: String)
case class ResponseBean(totalSize: Int, done: Boolean, records: List[RecordBean])

不幸的是,这不起作用。我执行以下 Gson 调用:

val response : ResponseBean = gson.fromJson(responseAsString, classOf[ResponseBean])

没有异常(exception),但我得到了这个错误的 bean 内容:

ResponseBean(0,false,null)

应该是2,true,“有记录的列表”。有人能告诉我解析 JSON 字符串的 bean 的正确结构吗?

提前致谢...

最好的问候, 凯

最佳答案

我不太明白你使用的符号。但是我在那里看到了几个错误:

  • Attributes 不是一个列表,只是一个对象,或者至少你的 json 是这么写的
  • AttributeBean的字段应该是type,而不是typ
  • Name 属性应该在类定义中大写(如果我查看 json)

否则您对 GSON 的期望似乎很好,代码也是如此。 GSON 易于使用,我强烈推荐它。您的代码中可能出现的唯一其他问题是标定问题,因为我不懂该语言。

编辑 添加一个 Java 示例,说明如何使类字段与 json 字段不匹配:

{
   "type" : "Article__c",
   "url" : "/services/data/v20.0/sobjects/Article__c/a01d00000030gSxAAI"
}

Java 代码:

public class AttributeBean {
    public String url;
    @SerializedName("type")
    public String typ;
}

由于这个注解,解析会正常进行。

关于java - 使用 GSON(或任何其他库)将 JSON 转换为 Java/Scala -> Bean 结构不清楚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9939357/

相关文章:

javascript - 无法解析 JSON 对象、Stringify 或获取 javascript 属性

c# - 在不更改 URI 模板反序列化的情况下使用自定义 WCF 正文反序列化

java - 如何从 hdfs 上的文件加载类型安全的 configFactory?

sql - 为什么 "error: not found: value StructType"在 sql 模式创建时?

java - 数组中的 MINValue 和 NEGATIVE_INFINITY

java - 正则表达式用空格替换所有数字和特殊字符?

javascript - 使用 JSON 键和值动态创建表

java - Scala Lift - 从 "/resources/toserve"读取文件

java - 使负数为正

java - Spring MVC XML请求返回406错误