Java对象转Json字符串
2016-08-27 19:40
423 查看
曾今遇到一个问题,需要将Java对象转换为Json字符串,用fastjson可以很方便的做到。实现代码如下:
本来以为json中的key在json字符串中就是Java对象的成员变量,根据需要就把Java对象的成员变量按照返回结果的要求格式全部写成了大写,运行以上代码,得到如下结果:
根据以上输出结果,将Java对象转化成了Json字符串,但是Java对象成员变量首字母变成了小写,这个就不是我想要的结果了。
后来经过查找资料,得知可以使用FastJson中@JSONField注解来解决,具体实现如下:
运行以上代码,得到结果如下:
由以上结果得出,成员变量首字母小写的问题解决了。但是是什么原因导致的呢?
原来fastjson的key是根据Java对象里面的getter和setter方法来的,不是根据属性名的,所以会出现这个问题,你在属性的get和set方法上面写上标注
那么,既然如此,有了注解之后是不是跟Java对象的成员变量就没关系了呢,我们把Java对象的成员变量改成小写,使用注解保持原来格式,继续测试。
运行以上程序,得到了跟之前一样的结果:
根据以上 结果得出,使用了fastjson的
import com.alibaba.fastjson.JSONObject; public class Result { private String RESULT_CODE; private String RESULT_VALUE; public String getRESULT_CODE() { return RESULT_CODE; } public void setRESULT_CODE(String rESULT_CODE) { RESULT_CODE = rESULT_CODE; } public String getRESULT_VALUE() { return RESULT_VALUE; } public void setRESULT_VALUE(String rESULT_VALUE) { RESULT_VALUE = rESULT_VALUE; } public static void main(String[] args) { Result result = new Result(); result.setRESULT_CODE("0"); result.setRESULT_VALUE("OK"); String resultJson = JSONObject.toJSONString(result); System.out.println(resultJson); } }
本来以为json中的key在json字符串中就是Java对象的成员变量,根据需要就把Java对象的成员变量按照返回结果的要求格式全部写成了大写,运行以上代码,得到如下结果:
{"rESULT_CODE":"0","rESULT_VALUE":"OK"}
根据以上输出结果,将Java对象转化成了Json字符串,但是Java对象成员变量首字母变成了小写,这个就不是我想要的结果了。
后来经过查找资料,得知可以使用FastJson中@JSONField注解来解决,具体实现如下:
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.annotation.JSONField; public class Result { private String RESULT_CODE; private String RESULT_VALUE; @JSONField(name = "RESULT_CODE") public String getRESULT_CODE() { return RESULT_CODE; } public void setRESULT_CODE(String rESULT_CODE) { RESULT_CODE = rESULT_CODE; } @JSONField(name = "RESULT_VALUE") public String getRESULT_VALUE() { return RESULT_VALUE; } public void setRESULT_VALUE(String rESULT_VALUE) { RESULT_VALUE = rESULT_VALUE; } public static void main(String[] args) { Result result = new Result(); result.setRESULT_CODE("0"); result.setRESULT_VALUE("OK"); String resultJson = JSONObject.toJSONString(result); System.out.println(resultJson); } }
运行以上代码,得到结果如下:
{"RESULT_CODE":"0","RESULT_VALUE":"OK"}
由以上结果得出,成员变量首字母小写的问题解决了。但是是什么原因导致的呢?
原来fastjson的key是根据Java对象里面的getter和setter方法来的,不是根据属性名的,所以会出现这个问题,你在属性的get和set方法上面写上标注
@JSONField(name = "RESULT_CODE")就能解决了。
那么,既然如此,有了注解之后是不是跟Java对象的成员变量就没关系了呢,我们把Java对象的成员变量改成小写,使用注解保持原来格式,继续测试。
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.annotation.JSONField; public class Result { private String result_code; private String result_value; @JSONField(name = "RESULT_CODE") public String getResult_code() { return result_code; } public void setResult_code(String result_code) { this.result_code = result_code; } @JSONField(name = "RESULT_VALUE") public String getResult_value() { return result_value; } public void setResult_value(String result_value) { this.result_value = result_value; } public static void main(String[] args) { Result result = new Result(); result.setResult_code("0"); result.setResult_value("OK"); String resultJson = JSONObject.toJSONString(result); System.out.println(resultJson); } }
运行以上程序,得到了跟之前一样的结果:
{"RESULT_CODE":"0","RESULT_VALUE":"OK"}
根据以上 结果得出,使用了fastjson的
@JSONField之后,就可以在不改变Java对象成员变量的前提下,自定义json的输出格式了,这样看来还是很方便的。
相关文章推荐
- 工作笔记:ajax json 同一jsp页面中,把java变量赋给js变量,如果java变量字符串符合json格式,则赋给js变量时,js变量会自动的变为json对象
- JSON对象反序列化为Java对象的时候自定义Date类型的字符串格式
- java json字符串转换成json对象
- java中将jsonObject字符串转化为Map对象
- Java中JSON字符串与java对象的互换实例详解
- Java对象转换成Json字符串是无法获得对应字段名
- Json字符串与java对象的互转
- JSON 字符串 与 java 对象的转换
- 使用jackson对Java对象与JSON字符串相互转换的一些总结
- 将JAVA对象转换成JSON字符串
- json-lib和jackson进行Java对象到json字符串序列化性能比较
- 自定义test之java json字符串转为java对象
- java 实现json数组字符串遍历出json对象
- Java中关于Json对象类型和字符串类型之间互相转化的问题 .
- 非标准json,标准json,json字符串与js对象,Java对象之间的相互转换
- JSON解析类库之Jackson(1) --- Jackson类库学习, 生成与解析json数据,json字符串与Java对象互转
- Java中Json字符串直接转换为对象(包括多层List集合 嵌套)
- json字符串和java对象的互相转换
- JSON 字符串 与 java 对象的转换
- FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换