【问题标题】:Parsing Json file with Jackson用 Jackson 解析 Json 文件
【发布时间】:2018-06-30 20:39:27
【问题描述】:

我调用一个返回 Json 对象的 WS,如下所示:

   {
        "id": "salton", 
        "name": "salton", 
    }

我使用它解析没有任何问题

ObjectMapper mapper = new ObjectMapper();
return mapper.readValue(jsonStr, Show.class);

然后我还有一个返回对象列表的WS,如下

{
    "id": "saltonId", 
    "name": "salton", 
},
{
    "id": "elCordeLaCiutat", 
    "name": "elCordeLaCiutat", 
}

我想用它来解析

ObjectMapper mapper = new ObjectMapper();
return mapper.readValue(jsonStr, List<Show.class>.class);

但我遇到了编译问题

Multiple markers at this line
    - List cannot be resolved to a variable
    - Syntax error on token ">", byte expected after this 
     token

【问题讨论】:

  • 你是否包含了 java.util.List?
  • 是的,它包含在导入中
  • 为什么 .class 在泛型中?
  • 使用mapper.readValue(jsonStr, mapper.getTypeFactory().constructCollectionType(List.class, Show.class));
  • 您的对象列表应该用括号括起来。

标签: java json jackson jackson2


【解决方案1】:
Type listType = new TypeToken<List<Show>>() {}.getType();
return mapper.readValue(jsonStr, listType.class);

【讨论】:

    【解决方案2】:

    对象列表应如下包装在[] 中

    [
        {
            "id": "saltonId", 
            "name": "salton", 
        },
        {
            "id": "elCordeLaCiutat", 
            "name": "elCordeLaCiutat", 
        }
    ]
    

    你可以像这样取消军队:

    ObjectMapper mapper = new ObjectMapper();
    List<Show> shows = Arrays.asList(mapper.readValue(json, Show[].class));
    

    【讨论】:

      猜你喜欢
      • 2014-06-11
      • 1970-01-01
      • 2017-09-06
      • 2015-07-29
      • 1970-01-01
      • 2017-09-05
      • 1970-01-01
      • 2012-07-05
      • 1970-01-01
      相关资源
      最近更新 更多