繁体   English   中英

如何解析扁平化的 Json?

[英]How to parse a flattened Json?

我需要使用扁平结构 JSON,例如在分层 Json 下:

{
  "employees": [
    {
      "employee1": {
        "employeeId": 123,
        "name": "ABC",
        "type": "permanent",
        "address": {
          "street": "",
          "city": "",
          "zipcode": 123456
        },
        "phoneNumbers": [
          123456,
          987654
        ],
        "designation": "Manager",
        "properties": {
          "age": "29 years",
          "joiningDate": "17-may-2017",
          "salary": "1000 USD"
        }
      }
    },
    {
      "employee2": {
        "employeeId": 123,
        "name": "XYZ",
        "type": "parttime",
        "address": {
          "street": "",
          "city": "",
          "zipcode": 345645
        },
        "phoneNumbers": [
          345332,
          675444
        ],
        "designation": "Contractor",
        "properties": {
          "age": "35 years",
          "joiningatDate": "17-june-2015",
          "salary": "700 USD"
        }
      }
    }
  ]
}

**Could be represented as flat structure Json as below(generated this using json-flattener):**

{
  "employees[0].employee1.address.zipcode": 123456,
  "employees[0].employee1.address.city": "",
  "employees[0].employee1.address.street": "",
  "employees[0].employee1.name": "ABC",
  "employees[0].employee1.employeeId": 123,
  "employees[0].employee1.designation": "Manager",
  "employees[0].employee1.type": "permanent",
  "employees[0].employee1.phoneNumbers[0]": 123456,
  "employees[0].employee1.phoneNumbers[1]": 987654,
  "employees[0].employee1.properties.joiningDate": "17-may-2017",
  "employees[0].employee1.properties.salary": "1000 USD",
  "employees[0].employee1.properties.age": "29 years",
  "employees[1].employee2.address.zipcode": 345645,
  "employees[1].employee2.address.city": "",
  "employees[1].employee2.address.street": "",
  "employees[1].employee2.name": "XYZ",
  "employees[1].employee2.employeeId": 123,
  "employees[1].employee2.designation": "Contractor",
  "employees[1].employee2.type": "parttime",
  "employees[1].employee2.phoneNumbers[0]": 345332,
  "employees[1].employee2.phoneNumbers[1]": 675444,
  "employees[1].employee2.properties.joiningDate": "17-june-2015",
  "employees[1].employee2.properties.salary": "700 USD",
  "employees[1].employee2.properties.age": "35 years"
}

我的问题是,如果我的服务接收到像上面那样扁平化的 Json,如何将它自动转换为 java 域对象,如:

class Employee{
Address address;
Properties property;
} 

是否有任何 Java Json 解析器支持这种自动转换,或者我必须实现自己的解析逻辑,根据键中的点拆分键?

提前致谢。

你可以看看json-flattener

它可以满足您的需求,甚至更多。

用法很简单,如下所示:

String json = "{ \"a\" : { \"b\" : 1, \"c\": null, \"d\": [false, true] }, \"e\": \"f\", \"g\":2.3 }";
String jsonStr = JsonFlattener.flatten(json);
System.out.println(jsonStr);
// Output: {"a.b":1,"a.c":null,"a.d[0]":false,"a.d[1]":true,"e":"f","g":2.3}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM