Вам нужно будет использовать библиотеку Google gson для анализа ваших строк json, а также создать дополнительные классы для хранения данных для них.Сохраните вашу строку json в файлах, чтобы прочитать содержимое и преобразовать их в соответствующие объекты.
Упомянутые вами строки JSON содержат ошибку, так как вы используете («) во многих местах.Замените их на (") во всех местах. Это изменение очень важно, потому что, если вы этого не сделаете, вы можете получить исключения или нежелательные выходные данные.
Сохраните строки Json следующим образом:
List1.txt
{
"One": [
"G13DA"
],
"Two": [
"G13AA",
"G13AD"
]
}
List2.txt
[
{
"subgroupCode": "G13AA",
"productGroup": [
{
"productCode": "G1A",
"productDescription": "Two 1"
},
{
"productCode": "G9B",
"productDescription": "Two 2"
}
]
},
{
"subgroupCode": "G13AD",
"productGroup": [
{
"productCode": "G4A",
"productDescription": "Two 3"
},
{
"productCode": "G9C",
"productDescription": "Two 4"
}
]
},
{
"subgroupCode": "G13DA",
"productGroup": [
{
"productCode": "G5M",
"productDescription": "One 1"
},
{
"productCode": "G9M",
"productDescription": "One 2"
}
]
}
]
Вам потребуется изменить пути к файлам этих двух файлов во время работы программы
Добавить следующие классы
JuniorArea.class
public class JuniorArea {
private String juniorAreaDescription;
private List<MerchandisingGroup> mechandisingGroup;
public String getJuniorAreaDescription() {
return juniorAreaDescription;
}
public void setJuniorAreaDescription(String juniorAreaDescription) {
this.juniorAreaDescription = juniorAreaDescription;
}
public List<MerchandisingGroup> getMechandisingGroup() {
return mechandisingGroup;
}
public void setMechandisingGroup(List<MerchandisingGroup> mechandisingGroup) {
this.mechandisingGroup = mechandisingGroup;
}
@Override
public String toString() {
return "JuniorArea [juniorAreaDescription=" + juniorAreaDescription + ", mechandisingGroup=" + mechandisingGroup
+ "]";
}
}
JuniorAreaCollection.class
public class JuniorAreaCollection {
private List<JuniorArea> juniorArea;
public List<JuniorArea> getJuniorArea() {
return juniorArea;
}
public void setJuniorArea(List<JuniorArea> juniorArea) {
this.juniorArea = juniorArea;
}
@Override
public String toString() {
return "JuniorAreaCollection [juniorArea=" + juniorArea + "]";
}
}
MerchandisingGroup.class
public class MerchandisingGroup {
private String productCode;
private String productDescription;
public String getProductCode() {
return productCode;
}
public void setProductCode(String productCode) {
this.productCode = productCode;
}
public String getProductDescription() {
return productDescription;
}
public void setProductDescription(String productDescription) {
this.productDescription = productDescription;
}
@Override
public String toString() {
return "MechandisingGroup [productCode=" + productCode + ", productDescription=" + productDescription + "]";
}
}
Product.class
public class Product {
private String subgroupCode;
private List<ProductGroup> productGroup;
public String getSubgroupCode() {
return subgroupCode;
}
public void setSubgroupCode(String subgroupCode) {
this.subgroupCode = subgroupCode;
}
public List<ProductGroup> getProductGroup() {
return productGroup;
}
public void setProductGroup(List<ProductGroup> productGroup) {
this.productGroup = productGroup;
}
@Override
public String toString() {
return "Product [subgroupCode=" + subgroupCode + ", productGroup=" + productGroup + "]";
}
}
ProductGroup.class
public class ProductGroup {
private String productCode;
private String productDescription;
public String getProductCode() {
return productCode;
}
public void setProductCode(String productCode) {
this.productCode = productCode;
}
public String getProductDescription() {
return productDescription;
}
public void setProductDescription(String productDescription) {
this.productDescription = productDescription;
}
@Override
public String toString() {
return "ProductGroup [productCode=" + productCode + ", productDescription=" + productDescription + "]";
}
}
Наконец, запустите следующий код основного класса, чтобы проверить вывод
public class MainRunner {
// Use Path according to your file system
private static String List1Path = "/List1.txt";
// Use Path according to your file system
private static String List2Path = "/List2.txt";
public static void main(String...arg) throws UnsupportedEncodingException, IOException {
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String List1Content = new String(Files.readAllBytes(Paths.get(List1Path)), "UTF-8");
Map<String, List<String>> map = new HashMap<>();
map = gson.fromJson(List1Content, new TypeToken<Map<String, List<String>>>() {}.getType());
System.out.println(map);
String List2Content = new String(Files.readAllBytes(Paths.get(List2Path)), "UTF-8");
List<Product> products = gson.fromJson(List2Content, new TypeToken<List<Product>>() {}.getType());
System.out.println(products);
List<JuniorArea> juniorAreas = new ArrayList<>();
for (String s : map.keySet()) {
JuniorArea juniorArea = new JuniorArea();
juniorArea.setJuniorAreaDescription(s);
List<MerchandisingGroup> merchandisingGroups = new ArrayList<>();
List<String> subgroupCodes = map.get(s);
for (String subgroupCode : subgroupCodes) {
for (Product product : products) {
if (product.getSubgroupCode().equals(subgroupCode)) {
List<ProductGroup> productGroups = product.getProductGroup();
for (ProductGroup productGroup : productGroups) {
MerchandisingGroup merchandisingGroup = new MerchandisingGroup();
merchandisingGroup.setProductCode(productGroup.getProductCode());
merchandisingGroup.setProductDescription(productGroup.getProductDescription());
merchandisingGroups.add(merchandisingGroup);
}
}
}
}
juniorArea.setMechandisingGroup(merchandisingGroups);
juniorAreas.add(juniorArea);
}
JuniorAreaCollection collection = new JuniorAreaCollection();
collection.setJuniorArea(juniorAreas);
System.out.println(gson.toJson(collection));
}
}
Вывод должен быть напечатан на вашей консоли
{
"juniorArea": [
{
"juniorAreaDescription": "One",
"mechandisingGroup": [
{
"productCode": "G5M",
"productDescription": "One 1"
},
{
"productCode": "G9M",
"productDescription": "One 2"
}
]
},
{
"juniorAreaDescription": "Two",
"mechandisingGroup": [
{
"productCode": "G1A",
"productDescription": "Two 1"
},
{
"productCode": "G9B",
"productDescription": "Two 2"
},
{
"productCode": "G4A",
"productDescription": "Two 3"
},
{
"productCode": "G9C",
"productDescription": "Two 4"
}
]
}
]
}