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

JSON中带有数字类名的GSON

丰飞龙
2023-03-14

我有一个来自服务器的JSON字符串,我无法控制它
我通过编程使用jsonschema2pojo库生成了Java类
我正在使用GSON将JSON反序列化到我的Java对象中。

下面是JSON的一个例子。

"description_by_id": {
    "50": {
        "field1": "value1",
        "field2": "value2",
        "field3": "value3"
    }
}

“50”子类实际上只是18个类中的一个,它们的名称类似于一个数字
当jsonschema2pojo生成Java类时,可以理解它会在前面加一个下划线来创建类名(所以,_50)。

jsonschema2pojo使用以下成员生成DescriptionById类:

@JsonProperty("50")私有com.me.models._50_50;

getter看起来像这样(setter类似):

@JsonProperty(“50”)公共com。我模特_50 get50(){return_50;}

我是这样使用GSON的:

Gson Gson=new GsonBuilder()。setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_,带_下划线)。创建()

但是在GSON完成后,_50对象和其他17个类似的对象都是空的,我已经检查了JSON中的对应点是否用实际值填充。

在这条链上,我能做些什么来让它正常工作,而不需要手动破解这个问题?


共有1个答案

董品
2023-03-14
匿名用户

那个“50”子类实际上只是18个类中的1个,这些类的名称类似于数字

当你得到一个没有Java类的额外ID时会发生什么?格森不知道该怎么办。。。

不要上课。使用地图。

做这个“内在的”POJO

public class Inner {

    private String field1;
    private String field2;
    private String field3;

}

还有外面的POJO

public class Outer {
    private TreeMap<String, Inner> description_by_id;
}

然后,您将有一些Outer.getdescription ptionById("50"). getField1()

(根据需要在Gson属性中添加)

 类似资料:
  • 我在Eclipse中创建了一个简单的类: 我得到了这个错误: 尽管我能够通过使Java类名以大写字母开头来解决这个问题。有人能帮助理解这里到底发生了什么吗?

  • 问题内容: 我在使用受信任的时间戳与Bouncy Castle创建有效的CMS签名时遇到问题。签名创建工作良好(我想将签名包括到PDF文件中),签名有效。但是,当我在签名的未签名属性表中添加可信时间戳后,签名仍然保持有效,但是Reader会报告 该签名包括嵌入式时间戳,但是无效 。这使我相信,哈希时间戳是不正确的,但是我似乎无法弄清楚问题出在哪里。 签名代码: 该代码: : 谢谢你的帮助! 示例文

  • 问题内容: 我希望使用该软件包封送在我的应用程序的一个导入软件包中声明的结构。 例如。: 因为是导入的,所以结构中所有可用的(导出的)字段都以大写字母开头。但我希望使用小写的键名: 将导致 {“ Foo”:42} 但我希望得到 {“ foo”:42} 是否可以通过一些简单的方法解决问题? 问题答案: 看一下encoding / json.Marshal 的文档。它讨论了如何使用struct字段标签

  • 问题内容: ava类名称中哪些字符有效?还有哪些其他规则管理Java类名称(例如,Java类名称不能以数字开头)? 问题答案: 你几乎可以使用任何字符,包括大多数Unicode字符!确切的定义在Java语言规范的3.8:标识符一节中。 一个标识符是无限长序列的Java字母和爪哇位,其中第一个必须是一个爪哇字母。… 字母和数字可能来自整个Unicode字符集,…这允许程序员在使用其母语编写的程序中使

  • 问题内容: 我正在动态创建python类,我知道并非所有字符在此上下文中都是有效的。 我可以在类库中某处使用某种方法来清理随机文本字符串,以便将其用作类名吗?那个或者允许的字符列表将是一个很好的帮助。 关于与标识符名称冲突的补充: 就像在下面的答案中指出的@Ignacio一样,任何可以有效用作标识符的字符都是类名中的有效字符。您甚至可以毫无保留地将保留字用作类名。但是有一个陷阱。如果您确实使用保留

  • 问题内容: 我正在开发一个使用jQuery,PHP和JSON作为响应的依赖选择脚本。 除了使用特殊字符(如法语(é,è,à…))外,其他所有内容都运行良好 如果我像(&eacute;,&egrave;和&agrave;)那样对它们进行预编码(这里我在&符和单词的其余部分之间使用空格以防止在我的问题中进行自动编码)它可以工作,但是当使用jquery渲染字符时不会转换为应具有的外观(é…),而是按原样