Java jackson-json对象解析
我的任务是将Json解析为Java类 我试图解析的Json片段有点像树结构 这里的关键点是,Java jackson-json对象解析,java,json,jackson,Java,Json,Jackson,我的任务是将Json解析为Java类 我试图解析的Json片段有点像树结构 这里的关键点是,parameterValue可以是字符串,也可以是参数名称/值对的另一个数组 我想使用Jackson mapper Response response = mapper.readValue(jsonObjstring, Response.class); 这里的问题是,我不知道如何在这里描述响应类,所以它可以由Jackson自动解析。如果可能的话 Json: 您可以尝试这个在线json-to-JavaPO
parameterValue
可以是字符串,也可以是参数名称/值对的另一个数组
我想使用Jackson mapper
Response response = mapper.readValue(jsonObjstring, Response.class);
这里的问题是,我不知道如何在这里描述响应类,所以它可以由Jackson自动解析。如果可能的话
Json:
您可以尝试这个在线json-to-JavaPOJO映射器,它会生成所需的结果,并且对我来说非常方便
试一试,如果您在提供您收到的完整json时遇到任何困难,我们可以解决其他问题。您可以试一试这个在线json到java pojo映射器,它会产生所需的结果,并且多次对我有用
尝试一下,如果您在提供完整的json时遇到任何困难,我们可以解决其他问题。创建一个包含字段和getter/setter的POJO Response.java类,创建一个标准构造函数和一个包含字段的构造函数,以及一个toString方法()。我将向您展示一个带有注释的示例 定义类,如:
@JsonAutoDetect
@JsonSerialize
public class Response implements Serializable
然后你的田地
@JsonProperty
private String parameterName;
最后是你的构造器f.e.像这样
@JsonCreator
public Response(@JsonProperty("parameterName") String parameterName) {
this.parameterName = parameterName;
}
创建一个包含字段和getter/setter的POJO Response.java类,创建一个标准构造函数和一个包含字段的构造函数,以及一个toString方法()。我将向您展示一个带有注释的示例 定义类,如:
@JsonAutoDetect
@JsonSerialize
public class Response implements Serializable
然后你的田地
@JsonProperty
private String parameterName;
最后是你的构造器f.e.像这样
@JsonCreator
public Response(@JsonProperty("parameterName") String parameterName) {
this.parameterName = parameterName;
}
我把它定义为
私有列表结果参数代码>
然后jackson maper将其(对象)解析为LinkedHashMapEnty(当它是最终值时),或者解析为ArrayList(如果它不是一个值而是另一个值列表)
它可以关闭 我把它定义为
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();
}
}
}
私有列表结果参数代码>
然后jackson maper将其(对象)解析为LinkedHashMapEnty(当它是最终值时),或者解析为ArrayList(如果它不是一个值而是另一个值列表)
它可以关闭
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.jar
jackson-core-2.3.5.jar
jackson-databind-2.3.5.jar
首先需要将json转换为字符串格式,然后由ObjectMapper将其转换为树结构
为此,您需要使用3个罐子:
jackson-annotations-2.3.5.jar
jackson-core-2.3.5.jar
jackson-databind-2.3.5.jar共享您的代码段,而不是仅仅抛出json
共享您的代码段,而不是仅仅抛出json
,但是当值可能是字符串或数组时,这个pojo应该是什么样子呢?tomas,这个参数名是字符串,如果您想要更多像parameterValue这样的变量,只需按如下所示定义它们,如果您问如何将这些解析为arraylist,我会这样做->arraylist images=jsonMapper.readValue(json,jsonMapper.getTypeFactory().ConstructionType(arraylist.class,Image.class));但是当值可能是字符串或数组时,这个pojo应该是什么样子呢?托马斯,这个parametername是一个字符串,如果你想要更多像parameterValue这样的变量,请按图中所示定义它们,如果你问如何将它们解析成arraylist,我会这样做->arraylist images=jsonMapper.readValue(json,jsonMapper.getTypeFactory().ConstructionCollectionType(ArrayList.class,Image.class));