Файлы .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, в котором я могу хранить эти ключи. Но проблема в том, что есть сотни разных ключей. Создать объект для вложенных элементов несложно.
Tabs.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
Настроить такой объект было бы невозможно и просто глупо. Может ли кто-нибудь предложить альтернативное или лучшее решение проблемы?




Для этого можно использовать HashMap, например:
HashMap<String, Tabs> myTabs = new HashMap<>();
myTabs.put("Business Information", new Tabs());
Здесь вы должны заменить new Tabs() на свой проанализированный класс Tabs и заменить "Business Information" на ключ, связанный с классом Tabs. Это можно сделать в цикле for, перебирая ваш объект JSON.
Вы можете получить свои объекты Tabs впоследствии на основе значения Key для HashMap:
Tabs tab = myTabs.get("Business Information");
Как мне сохранить ключ в объекте и сохранить форматирование при последующей записи этого объекта в аналогичный файл .json?
GSON автоматически проанализирует объекты HashMap в правильном формате JSON.
вместо структуры вроде
{
"Business Information": {
"xpath": "//span[text()='Business Information']",
"elementType": "LINK",
"findBy": "XPath"
},
Я рекомендую это:
[
{
"type": "tab",
"name": "Business Information",
"xpath": "//span[text()='Business Information']",
"elementType": "LINK",
"findBy": "XPath"
}, {
"type": "tab",
"name": "Business Information",
"xpath": "//span[text()='Business Information']",
"elementType": "LINK",
"findBy": "XPath"
}, ...
]
Теперь вы можете легко перебирать массив JSON, и каждый из членов является объектом класса tabs.class. В свойствах нет места, поэтому их можно использовать напрямую.
Это было бы идеальным решением, но форматирование .json происходит из частного фреймворка, который необходимо полностью изменить.
вы можете изменить макет / структуру файла JSON?