当前位置: 首页 > 知识库问答 >
问题:

jackson json到对象解析

暴英达
2023-03-14

我有一个任务解析Json到Java类。

我试图解析的Json片段有点像树结构。

这里的关键点是,参数值可以是字符串,也可以是参数名称/值对的另一个数组;

我想用杰克逊地图绘制器

Response response = mapper.readValue(jsonObjstring, Response.class);

这里的问题是我不知道如何在这里描述响应类,所以它可以被杰克逊自动解析。如果有可能的话。

Json:

[{
  "parameterName" : "name",
  "parameterValue" : "value"
}, {
  "parameterName" : "apnRecord",
  "parameterValue" : [{
     "parameterName" : "name",
     "parameterValue" : "value"
  }, {
     "parameterName" : "name",
     "parameterValue" : "value"
  }, {
     "parameterName" : "name",
     "parameterValue" : "value"
  }, {
     "parameterName" : "name",
     "parameterValue" : "value"
  }, {
     "parameterName" : "name",
     "parameterValue" : "value"
  }, {
     "parameterName" : "name",
     "parameterValue" : "value"
  }]
}]

共有3个答案

萧成文
2023-03-14
package test;

import java.io.IOException;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

public class Test {

    public static void main(String[] args) {

        String readJsonAsString = "[{\r\n  \"parameterName\" : \"name\",\r\n  \"parameterValue\" : \"value\"\r\n}, {\r\n  \"parameterName\" : \"apnRecord\",\r\n  \"parameterValue\" : [{\r\n     \"parameterName\" : \"name\",\r\n     \"parameterValue\" : \"value\"\r\n  }, {\r\n     \"parameterName\" : \"name\",\r\n     \"parameterValue\" : \"value\"\r\n  }, {\r\n     \"parameterName\" : \"name\",\r\n     \"parameterValue\" : \"value\"\r\n  }, {\r\n     \"parameterName\" : \"name\",\r\n     \"parameterValue\" : \"value\"\r\n  }, {\r\n     \"parameterName\" : \"name\",\r\n     \"parameterValue\" : \"value\"\r\n  }, {\r\n     \"parameterName\" : \"name\",\r\n     \"parameterValue\" : \"value\"\r\n  }]\r\n}]";

        try {

            ObjectMapper mapper = new ObjectMapper();
            JsonNode jsonNodes = mapper.readTree(readJsonAsString.toString());
            for (JsonNode jsonNode : jsonNodes) {
                System.out.println(jsonNode.get("parameterName"));
            }


        } catch (JsonProcessingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}

首先需要将json转换为字符串格式,然后通过ObjectMapper需要将其转换为树形结构。

为此,您需要使用3罐:jackson-annotations-2.3.5.jarjackson-core-2.3.5.jarjackson-databind-2.3.5.jar

穆展鹏
2023-03-14

创建POJO响应。包含字段和getter/setter的java类创建一个标准构造函数和一个包含字段的构造函数,以及一个toString方法()。我将向您展示一个带有注释的示例

定义类,如:

@JsonAutoDetect
@JsonSerialize
public class Response implements Serializable

然后您的字段

@JsonProperty
private String parameterName;

最后你的建造者像这样

@JsonCreator
public Response(@JsonProperty("parameterName") String parameterName) {
    this.parameterName = parameterName;
}
濮嘉茂
2023-03-14

您可以尝试这个在线json-to-java pojo映射器,它可以生成所需的结果,而且我可以多次使用它。

http://pojo.sodhanalibrary.com/

试试看,如果您遇到更多困难,请提供您收到的完整json,我们可以解决其他问题。

 类似资料:
  • 我从accuweather获得了以下带有json的代码 我尝试通过Jackson将此对象解析为POJO 我有json中指定的所有模型,如、数组、,由组成(在json中命名为最小值和最大值)等,它们都有私有字段和公共构造函数、getter和setter。但是我没有一些字段,因为我想省略它们(Day、night、EpochDate、Source)。 当我运行程序时,我得到了错误 com.fasterx

  • XML响应 我为电影和图像创建了pojo类。 Film.java 形象JAVA 请帮助我是新来的,我应该使用JAXB。 解决方案: 我已经加了 在Image的getter方法中,我添加了@xmlement(name=“Image”)。 在Image类中,我添加了一个注释@XmlRootElement(name=“Image”),它提供了我想要的东西。

  • Milo Yip 2016/11/15 本文是《从零开始的 JSON 库教程》的第六个单元解答篇。解答代码位于 json-tutorial/tutorial06_answer。 1. 重构 lept_parse_string() 这个「提取方法」重构练习很简单,只需要把原来调用 lept_set_string 的地方,改为写入参数变量。因此,原来的 lept_parse_string() 和 答案

  • 我有这样一个XML字符串: 当我试图将字符串读入这样的对象时 我得到以下错误: 我在类中使用@JsonProperty是因为@XmlElement还有其他问题。如果我在ResultModel类中排除字段QueryResults,那么字符串的解析工作正常,看起来是正确的。我做错了什么?我对Java中XML字符串的解析非常陌生,所以我希望有一些简单的方法来解决这个问题。。。

  • 问题内容: 我无法理解如何使用Visual .NET将JSON字符串解析为c#对象。任务很简单,但是我仍然迷路…我得到了这个字符串: 这是我尝试进行消毒的代码: 我不知道在’<’和’>’之间放置什么,从网上阅读的内容中,我必须为其创建一个新的类。另外,如何获得输出?一个例子会有所帮助! 问题答案: 创建一个可以反序列化您的JSON的新类,例如:

  • Milo Yip 2016/10/29 本文是《从零开始的 JSON 库教程》的第六个单元。代码位于 json-tutorial/tutorial06。 本单元内容: JSON 对象 数据结构 重构字符串解析 实现 总结与练习 1. JSON 对象 此单元是本教程最后一个关于 JSON 解析器的部分。JSON 对象和 JSON 数组非常相似,区别包括 JSON 对象以花括号 {}(U+007B、U