我有像java这样的类:
public class Sample{
int foo=5;
int bar=6;
}
现在我想生成JSON对象,但没有bar字段:
{"foo":5}
实现这一目标的最佳方法是什么? 我应该手动编写JSON字符串,还是可以使用某些库或生成器?
答案 0 :(得分:2)
我应该手动编写JSON字符串
避免这种情况,通过这种方式制作无效的json很容易。使用库可确保正确转义可能会破坏输出的字符。
public class Sample {
private int foo = 5;
private int transient bar = 6;
}
Gson gson = new Gson();
或者您可以选择要包含Expose
属性的内容:
public class Sample {
@Expose private int foo = 5;
private int bar = 6;
}
Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
然后无论采用哪种方法,都要这样做:
String json = gson.toJson(obj);
获得所需的{"foo":5}
答案 1 :(得分:0)
您可以使用杰克逊来解决您的问题。请按照以下步骤进行操作 -
第1步 - 制作一个将Java对象转换为Json的方法
public class JsonUtils {
public static String javaToJson(Object o) {
String jsonString = null;
try {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(org.codehaus.jackson.map.DeserializationConfig.Feature.UNWRAP_ROOT_VALUE,true);
jsonString = objectMapper.writeValueAsString(o);
} catch (JsonGenerationException e) {
logger.error(e);
} catch (JsonMappingException e) {
logger.error(e);
} catch (IOException e) {
logger.error(e);
}
return jsonString;
}
}
第2步模型类
package com.javamad.model;
import org.codehaus.jackson.annotate.JsonIgnore;
public class Sample{
int foo=5;
public int getFoo() {
return foo;
}
public void setFoo(int foo) {
this.foo = foo;
}
@JsonIgnore
public int getBar() {
return bar;
}
public void setBar(int bar) {
this.bar = bar;
}
int bar=6;
}
第3步将您的java类转换为json
Sample sample = new Sample()
JsonUtils.javaToJson(sample);
答案 2 :(得分:-1)
您可以尝试使用Gson,JSON库将对象转换为/从json。
这两种方法很有帮助:
toJson() - 将Java对象转换为JSON格式
fromJson() - 将JSON转换为Java对象
Gson gson = new Gson();
// convert java object to JSON format,
// and returned as JSON formatted string
String json = gson.toJson(obj);