首页 > 解决方案 > 为密钥始终不同的 json 文件创建 Java 对象

问题描述

.json 文件看起来像这样

XYZ.json

{
"Business Information": {
    "xpath": "//span[text()='Business Information']",
    "elementType": "LINK",
    "findBy": "XPath"
},
"AP and Ship-To Information": {
    "xpath": "//span[text()='AP and Ship-To Information']",
    "elementType": "LINK",
    "findBy": "XPath"
},
"Other Business Details": {
    "xpath": "//span[text()='Other Business Details']",
    "elementType": "LINK",
    "findBy": "XPath"
},
"Bank and Trade Information": {
    "xpath": "//span[text()='Bank and Trade Information']",
    "elementType": "LINK",
    "findBy": "XPath"
}
}

我想创建一个可以存储这些密钥的 Java 对象。但问题是有 100 多个不同的键。为嵌套元素创建对象很容易。

选项卡.class

public class Tabs {
    private String xpath;
    private String elementType;
    private String findBy;
}

但是对于 TabNames 类...

TabNames.class

public class TabNames {
    Tab Business Name; // Cannot create Object with whitespace
    Tab 2;
    Tab 3;
    and so on.. // there maybe 100s of tabs from JSON

像这样配置一个对象是不可能的,而且简直是愚蠢的。任何人都可以为该问题提供替代或更好的解决方案吗?

标签: javajsonclassobjectgson

解决方案


您可以HashMap为此使用,例如:

HashMap<String, Tabs> myTabs = new HashMap<>();
myTabs.put("Business Information", new Tabs());

在这里,您将替换new Tabs()为已解析的Tabs类,并且您将更改为"Business Information"Tabs该类关联的键。这可以通过迭代 JSON 对象在 for 循环中完成。

之后您可以Tabs根据以下Key值获取对象HashMap

Tabs tab = myTabs.get("Business Information");

推荐阅读