use*_*969 7 java json jackson mapper
我有一个班(A并且B是我的对象)
public A {
private List<B> b;
private int c;
}
Run Code Online (Sandbox Code Playgroud)
我有一个String变量temp.所以我会在这个变量中保存我的对象的JSON字符串.怎么样?
我试过这个2方法,但没有结果.
public void save() {
ObjectMapper mapper = new ObjectMapper();
String temp = mapper.writeValueAsString(a);
}
public void read(String temp) {
ObjectMapper mapper = new ObjectMapper();
A a = mapper.readValue(temp, A.class);
}
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
Kev*_*sox 13
代码应该将Type的实例传递A给writeValueAsString方法而不是实际的类.
在ObjectMapper将能够确定通过反射实例的类型,但是如果你没有通过一个实例它无法确定字段值的,以在生成JSON的地方.
另外一定要抓住或抛出适当的例外.
public void save() {
try {
A a = new A();
ObjectMapper mapper = new ObjectMapper();
String temp = mapper.writeValueAsString(a);
} catch (JsonGenerationException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
您还应该为类A和类上的字段设置附件B. 注意我B在上一句中包含,因为Jackson必须能够映射我们提供给它的实例上的所有字段.
public A {
private List<B> b;
private int c;
private B getB(){ return b;}
private void setB(B b){this.b = b;}
private int getC(){return c;}
private void setC(int c){this.c = c;}
}
Run Code Online (Sandbox Code Playgroud)
这是我测试过的一个完整的工作示例.
import java.io.IOException;
import java.util.List;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
public class A {
private List<B> b;
private int c;
public List<B> getB() {
return b;
}
public void setB(List<B> b) {
this.b = b;
}
public int getC() {
return c;
}
public void setC(int c) {
this.c = c;
}
public static void main(String[] args) throws JsonGenerationException, JsonMappingException, IOException {
A a = new A();
ObjectMapper mapper = new ObjectMapper();
String temp = mapper.writeValueAsString(a);
System.out.println(temp);
}
}
class B{
}
Run Code Online (Sandbox Code Playgroud)
如果这个简单示例不起作用,则该jackson-mapper-asl.jar文件很可能不在构建路径上.从此处下载文件并将其放在本地计算机上的某个位置.
接下来通过Eclipse,右键单击您的项目并选择属性.
然后选择Build Path> Libraries> Add External Jars.找到jar然后单击OK.