【问题标题】:REST and JSON - converting string to JSON array using jackson [duplicate]REST 和 JSON - 使用 jackson 将字符串转换为 JSON 数组 [重复]
【发布时间】:2016-09-24 14:34:31
【问题描述】:

我是 JSON 和 REST 的新手。我正在测试一个返回如下字符串的rest API:

[{
    "Supervisor_UniqueName": "adavis",
    "Active": "true",
    "DefaultCurrency_UniqueName": "USD",
    "arches_type": "x-zensar/primary",
    "Groups": "",
    "TimeZoneID": "US/Pacific-New",
    "UniqueName": "!!pl-10958-611879240",
    "EmailAddress": "!!pl-10958-611879240@devmail.zensar.com",
    "LocaleID_UniqueName": "en_US",
    "Name": "!!pl-10958-611879240"
}, {
    "Supervisor_UniqueName": "adavis",
    "Active": "true",
    "DefaultCurrency_UniqueName": "USD",
    "arches_type": "x-zensar/primary",
    "Groups": "",
    "TimeZoneID": "US/Pacific-New",
    "UniqueName": "!!pl-10958-789764779",
    "EmailAddress": "!!pl-10958-789764779@devmail.zensar.com",
    "LocaleID_UniqueName": "en_US",
    "Name": "!!pl-10958-789764779"
}, {
    "Supervisor_UniqueName": "adavis",
    "Active": "true",
    "DefaultCurrency_UniqueName": "USD",
    "arches_type": "x-zensar/primary",
    "Groups": "Report User",
    "TimeZoneID": "US/Pacific-New",
    "UniqueName": "105838945",
    "EmailAddress": "105838945@devmail.zensar.com",
    "LocaleID_UniqueName": "en_US",
    "Name": "105838945"
}, {
    "Supervisor_UniqueName": "adavis",
    "Active": "true",
    "DefaultCurrency_UniqueName": "USD",
    "arches_type": "x-zensar/primary",
    "Groups": "Report User, Report Manager, Report Administrator",
    "TimeZoneID": "US/Pacific-New",
    "UniqueName": "112352755",
    "EmailAddress": "112352755@devmail.zensar.com",
    "LocaleID_UniqueName": "en_US",
    "Name": "112352755"
}]

我调用rest API如下:

final ResponseEntity<String> responseEntity = restTemplate.getForEntity(resourceUrl , String.class);

其中restTemplate 的类型为RestTemplate

我想将它们转换为 JSON 数组,访问每个 Json 对象并获取每个对象的字段和值。

是否可以使用杰克逊来做到这一点?

【问题讨论】:

  • 你尝试了什么,你得到了什么,你期望什么,你遇到了什么错误?
  • 对不起..我做了更多的研究,这篇文章解决了我的问题stackoverflow.com/questions/5983932/…

标签: javascript java json rest


【解决方案1】:

您可以使用Jackson

这是您的 JSON 的(一部分):

[  
   {  
      "Supervisor_UniqueName":"adavis",
      "Active":"true",
      "DefaultCurrency_UniqueName":"USD",
      "arches_type":"x-zensar/primary",
      "Groups":"",
      "TimeZoneID":"US/Pacific-New",
      "UniqueName":"!!pl-10958-611879240",
      "EmailAddress":"!!pl-10958-611879240@devmail.zensar.com",
      "LocaleID_UniqueName":"en_US",
      "Name":"!!pl-10958-611879240"
   },
   {  
      "Supervisor_UniqueName":"adavis",
      "Active":"true",
      "DefaultCurrency_UniqueName":"USD",
      "arches_type":"x-zensar/primary",
      "Groups":"",
      "TimeZoneID":"US/Pacific-New",
      "UniqueName":"!!pl-10958-789764779",
      "EmailAddress":"!!pl-10958-789764779@devmail.zensar.com",
      "LocaleID_UniqueName":"en_US",
      "Name":"!!pl-10958-789764779"
   }
]

只是给你一个想法:

public MyClass {

  @JsonProperty("Supervisor_UniqueName")
  private String superVisorUniqueName;

  @JsonProperty("Active")
  private String active;

  // etc

  // getters and setters    
}

将 JSON 映射到您的 MyClass:

ObjectMapper mapper = new ObjectMapper();
List<MyClass> obj = mapper.readValue(json, new TypeReference<List<MyClass>>() {});

【讨论】:

  • 非常感谢您的回复。恐怕我不想仅仅因为它不可管理而编写映射器类。现在使用 API 我得到了用户数据,像这样,其余的 API 将返回不同类型的主数据(供应商、产品、商品代码、国家等)。恐怕我不能为每个 .这是矫枉过正。你觉得呢?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-27
  • 2014-07-11
  • 1970-01-01
  • 1970-01-01
  • 2018-12-17
相关资源
最近更新 更多