> 文档中心 > 关于java 实体类与json 实体类集合与jsonArray的相互转换

关于java 实体类与json 实体类集合与jsonArray的相互转换

最近项目中要多次使用到java 实体类与json 实体类集合与jsonArray的相互转换,接下来把遇到的问题和方法分享一下:

class Stu {    private String s1;    private String s2;    private String s3;    public String getS1() { return s1;    }    public void setS1(String s1) { this.s1 = s1;    }    public String getS2() { return s2;    }    public void setS2(String s2) { this.s2 = s2;    }    public String getS3() { return s3;    }    public void setS3(String s3) { this.s3 = s3;    }    @Override    public String toString() { return "Stu [s1=" + s1 + ", s2=" + s2 + ", s3=" + s3 + "]";    }}

java对象转jsonArray的方法:

List list = new LinkedList();JSONArray jsonarr = JSONArray.fromObject(list);

java对象转json字符串的方法:

String jsonString = JSONObject.fromObject(obj).toString()

String转JSONObject

JSONObject jsonObject = JSONObject.parseObject(str);

json转字符串,再转为Java对象

String JSONStr = JSON.toJSONString(list);BusLine busLine = JSON.parseObject(JSONStr, BusLine.class);

小编遇到这样在一个问题,当有的对象属性为null时,转JSONArray 时变成了“”,转JSONObject的时候直接转没了,现在需要这样的

Stu stu = new Stu("1111","1111",null);

转完事儿后还是这样的  

很多对象都不满足这种效果,现在小编推荐一种适合的方法:

String jsonString = JSONObject.toJSONString(stu, SerializerFeature.WriteMapNullValue);

直接转 完事后就是一个json格式的字符串

这种是直接去掉为null的数据String jsonString3 = com.alibaba.fastjson.JSONObject.toJSONString(stu, SerializerFeature.WriteNullStringAsEmpty);

Fastjson的SerializerFeature序列化相关属性 

QuoteFieldNames :输出key时是否使用双引号,默认为true 
WriteMapNullValue:是否输出值为null的字段,默认为false 
WriteNullNumberAsZero:数值字段如果为null,输出为0,而非null 
WriteNullListAsEmpty:List字段如果为null,输出为[],而非null 
WriteNullStringAsEmpty:字符类型字段如果为null,输出为”“,而非null 
WriteNullBooleanAsFalse:Boolean字段如果为null,输出为false,而非null

暂时就想了这么多,如果还有,后续继续补

再补几个:转List对象

String str = "[{"metal":"字符型","modelInfoList":[{"stopBundel":"LogineTraining"}]},{"metal":"字符型","modelInfoList":[{"stopBundel":"LogineTraining"}]}]"

List stopTransmitList= JSON.parseArray(str,StopTransmit.class);

转 JSONArray

JSONArray objects = JSON.parseArray(str)

================================================================================================

美丽的分隔符

关于json补充内容:
fastjson 进行json的解析和拼装和用ObjectMapper序列化和反序列化

用ObjectMapper序列化和反序列化

fastjson依赖:

            com.alibaba
            fastjson
            1.2.58

a) writeValueAsString(对象)

将User对象转为json字符串

ObjectMapper mapper = new ObjectMapper();

String jsonstring = mapper.writeValueAsString(User.class);

b) writeValue(参数,对象):

参数:

File: 将对象转为json字符串,保存到指定的文件中

Writer: 将对象转为json字符串,并将json数据填充到字符输出流中

outputStream: 将对象转为json字符串,并将json数据填充到字节输出流中

通过ObjectMapper类的 writeValue()方法序列化java对象至json字符串

ObjectMapper objectMapper = new ObjectMapper();
Car car = new Car("yellow", "renault");
objectMapper.writeValue(new File("target/car.json"), car);
{"color":"yellow","type":"renault"}

c) readValue

将json字符串转成User对象输出

ObjectMapper mapper = new ObjectMapper();

User user = String mapper.readValue(jsonstring,User.class);

8度云软件下载中心