javajson解析与Jackson
我试图通过这里的玩具示例了解Jackson解析JSON的诀窍: JSON:javajson解析与Jackson,java,json,jackson,Java,Json,Jackson,我试图通过这里的玩具示例了解Jackson解析JSON的诀窍: JSON: { "name" : { "first" : "Joe", "last" : "Sixpack" }, "gender" : "MALE", "verified" : false, "userImage" : "Rm9vYmFyIQ==" } “原始”数据绑定片段有问题: 1 ObjectMapper mapper = new ObjectMapper(); // can reuse, share g
{
"name" : { "first" : "Joe", "last" : "Sixpack" },
"gender" : "MALE",
"verified" : false,
"userImage" : "Rm9vYmFyIQ=="
}
“原始”数据绑定片段有问题:
1 ObjectMapper mapper = new ObjectMapper(); // can reuse, share globally
2 Map<String,Object> userData = mapper.readValue(new File("user.json"), Map.class);
1 ObjectMapper mapper=new ObjectMapper();//可以在全球范围内重复使用、共享
2 Map userData=mapper.readValue(新文件(“user.json”)、Map.class);
“name”处的值是{first=Joe,last=Sixpack}。当然,原始数据绑定可以处理嵌套的JSON对象,但我不知道如何访问first和last的值。我做错了什么?我知道已经很晚了,但我就是这样做的。请看下面 MainClass.java=
import java.io.IOException;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
public class MainClass {
public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException {
String jsonStr = "{\r\n" + " \"name\" : { \"first\" : \"Joe\", \"last\" : \"Sixpack\" },\r\n"
+ " \"gender\" : \"MALE\",\r\n" + " \"verified\" : false,\r\n"
+ " \"userImage\" : \"Rm9vYmFyIQ==\"\r\n" + "}";
ObjectMapper mapper = new ObjectMapper();
EntityClass jsonObj = mapper.readValue(jsonStr, EntityClass.class);
System.out.println(jsonObj.getName().getFirst());
System.out.println(jsonObj.getName().getLast());
System.out.println(jsonObj.getGender());
System.out.println(jsonObj.getVerified());
System.out.println(jsonObj.getUserImage() + "\n");
}
public class EntityClass
{
private String verified;
private Name name;
private String userImage;
private String gender;
public String getVerified ()
{
return verified;
}
public void setVerified (String verified)
{
this.verified = verified;
}
public Name getName ()
{
return name;
}
public void setName (Name name)
{
this.name = name;
}
public String getUserImage ()
{
return userImage;
}
public void setUserImage (String userImage)
{
this.userImage = userImage;
}
public String getGender ()
{
return gender;
}
public void setGender (String gender)
{
this.gender = gender;
}
@Override
public String toString()
{
return "ClassPojo [verified = "+verified+", name = "+name+", userImage = "+userImage+", gender = "+gender+"]";
}
}
EntityClass.java=
import java.io.IOException;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
public class MainClass {
public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException {
String jsonStr = "{\r\n" + " \"name\" : { \"first\" : \"Joe\", \"last\" : \"Sixpack\" },\r\n"
+ " \"gender\" : \"MALE\",\r\n" + " \"verified\" : false,\r\n"
+ " \"userImage\" : \"Rm9vYmFyIQ==\"\r\n" + "}";
ObjectMapper mapper = new ObjectMapper();
EntityClass jsonObj = mapper.readValue(jsonStr, EntityClass.class);
System.out.println(jsonObj.getName().getFirst());
System.out.println(jsonObj.getName().getLast());
System.out.println(jsonObj.getGender());
System.out.println(jsonObj.getVerified());
System.out.println(jsonObj.getUserImage() + "\n");
}
public class EntityClass
{
private String verified;
private Name name;
private String userImage;
private String gender;
public String getVerified ()
{
return verified;
}
public void setVerified (String verified)
{
this.verified = verified;
}
public Name getName ()
{
return name;
}
public void setName (Name name)
{
this.name = name;
}
public String getUserImage ()
{
return userImage;
}
public void setUserImage (String userImage)
{
this.userImage = userImage;
}
public String getGender ()
{
return gender;
}
public void setGender (String gender)
{
this.gender = gender;
}
@Override
public String toString()
{
return "ClassPojo [verified = "+verified+", name = "+name+", userImage = "+userImage+", gender = "+gender+"]";
}
}
Name.java=
public class Name {
private String last;
private String first;
public String getLast() {
return last;
}
public void setLast(String last) {
this.last = last;
}
@Override
public String toString() {
return "Name [last=" + last + ", first=" + first + "]";
}
public String getFirst() {
return first;
}
public void setFirst(String first) {
this.first = first;
} }
结果:-
乔
六包
男性
假的
Rm9vYmFyIQ=该键(
名称
)的对象是否为映射?只需使用这些键(第一个、最后一个)对其进行施放和访问。Jackson将不惜一切代价,而name
的键将是Map
。只要在.get()
时强制转换它。@fge您是说keyname
的值吗?((Map)userData.get(“name”).get(“first”);谢谢你们+什么是实体类?你能不能也在代码中添加它。EntityClass是Json所有属性的getter&setter类。是的,我知道它是PoJo类,因为它没有发布在OP上,请将它添加为答案的一部分。