前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java对象转json字符串方法_oracle clob转字符串

java对象转json字符串方法_oracle clob转字符串

作者头像
全栈程序员站长
发布2022-11-08 19:00:09
1.3K0
发布2022-11-08 19:00:09
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

曾今遇到一个问题,需要将Java对象转换为Json字符串,用fastjson可以很方便的做到。实现代码如下:

代码语言:javascript
复制
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对象的成员变量按照返回结果的要求格式全部写成了大写,运行以上代码,得到如下结果:

代码语言:javascript
复制
{"rESULT_CODE":"0","rESULT_VALUE":"OK"}

根据以上输出结果,将Java对象转化成了Json字符串,但是Java对象成员变量首字母变成了小写,这个就不是我想要的结果了。

后来经过查找资料,得知可以使用FastJson中@JSONField注解来解决,具体实现如下:

代码语言:javascript
复制
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);
    }
}

运行以上代码,得到结果如下:

代码语言:javascript
复制
{"RESULT_CODE":"0","RESULT_VALUE":"OK"}

由以上结果得出,成员变量首字母小写的问题解决了。但是是什么原因导致的呢?

原来fastjson的key是根据Java对象里面的getter和setter方法来的,不是根据属性名的,所以会出现这个问题,你在属性的get和set方法上面写上标注@JSONField(name = "RESULT_CODE") 就能解决了。

那么,既然如此,有了注解之后是不是跟Java对象的成员变量就没关系了呢,我们把Java对象的成员变量改成小写,使用注解保持原来格式,继续测试。

代码语言:javascript
复制
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);
    }
}

运行以上程序,得到了跟之前一样的结果:

代码语言:javascript
复制
{"RESULT_CODE":"0","RESULT_VALUE":"OK"}

根据以上 结果得出,使用了fastjson的@JSONField之后,就可以在不改变Java对象成员变量的前提下,自定义json的输出格式了,这样看来还是很方便的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/190866.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月22日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档