Java对象与Json字符串的相互转化

 方法一:com.alibaba.fastjson

一、基本语法

1.格式要求

  • 数据格式:JSON实际上就是键值对(“key” : “value”)
  • 数据要求:key必须是字符串,value可以是字符串、数字、对象、数组、布尔值或null

2.value的取值语法

  • 字符串,jsonObject.getString(“key”)
  • 数字,jsonObject.getIntValue(“key”) 或者 jsonObject.getInteger(“key”) 与之对应的数据类型
  • 布尔值,jsonObject.getBooleanValue(“key”)
  • 数组,jsonObject.getJSONArray(“key”)
  • Object 对象,jsonObject.get(“key”)
  • JSONObject 对象,jsonObject.getJSONObject(“key”)

3.JSON对象与字符串相互转换

用的是fastjson解析,pom文件

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>2.0.0</version>
</dependency>

java - > json字符串

  •  Object对象 转 Json字符串:JSON.toJSONString(Object object);
    Object jsonObject = new Object();
    String object = JSON.toJSONString(jsonObject);
    System.out.println(object);

字符串 - > java

  • Json字符串 转 Object对象:JSON.parseObject(String str);
JSONObject jsonObject = buildJSONObject(); // 构造的json对象
String jsonString = JSON.toJSONString(jsonObject);
JSONObject jsonObject1 = JSON.parseObject(jsonString);
  • 将字符串 转为 JSONArray:JSON.parseArray(arrayStr);
String arrayStr = "......";
JSONArray array = JSON.parseArray(arrayStr);
  • 将字符串 转为 具体的单个java对象:JSON.parseObject(String text, Class clazz);
String userString = "{\"name\":\"libai\"}";
User user1 = JSON.parseObject(userString, User.class);
// 或者
User user2 = JSON.parseObject(userString).toJavaObject(User.class);
// 再或者使用JSONObject替换JSON也可,即JSONObject.parseObject(userString, User.class);
@Data
static class User {
    private String name;
}
  • 将字符串 转为 具体的java List列表:JSONObject.parseArray(“字符串”).toJavaList(User.class);
String userListString = "[{\"name\":\"1\"},{\"name\":\"12\"}]";
List<User> userList = JSONObject.parseArray(userListString).toJavaList(User.class);

二、取值示例

存取数据测试

public class UserTest {
    private static JSONObject buildJSONObject() {
        // 构造JSONObject对象
        JSONObject jsonObject = new JSONObject();
        // value为字符串及数字
        jsonObject.put("name", "website");
        jsonObject.put("age", 18);

        // 构造JSONArray对象
        JSONArray jsonArray = new JSONArray();
        // JSONArray里面有JSONObject对象
        JSONObject jsonArrayObject1 = new JSONObject();
        jsonArrayObject1.put("name", "alibaba");
        jsonArrayObject1.put("info", "www.alibaba.com");
        JSONObject jsonArrayObject2 = new JSONObject();
        jsonArrayObject2.put("name", "baidu");
        jsonArrayObject2.put("info", "www.baidu.com");
        jsonArray.add(jsonArrayObject1);
        jsonArray.add(jsonArrayObject2);
        // value为JSONArray对象
        jsonObject.put("sites",jsonArray);

        JSONObject jsonObject2 = new JSONObject();
        jsonObject2.put("name", "blog.youkuaiyun.com");
        // value为JSONObject对象
        jsonObject.put("site", jsonObject2);
        return jsonObject;
    }

    @Test
    public void test() {
        JSONObject jsonObject = buildJSONObject();
        System.out.println(jsonObject);
        System.out.println(jsonObject.get("site"));			// 直接get返回的是Object对象
        System.out.println(jsonObject.getString("name"));	// getString返回的是字符串
        System.out.println(jsonObject.getIntValue("age"));  // getIntValue返回的是int类型

        // 直接getJSONObject获取到site的对象,再getString获取name的值
        System.out.println(jsonObject.getJSONObject("site").getString("name"));

        // getJSONArray获取sites的数组,再getJSONObject(0)获取数组中第一个对象,再getString获取name值
        System.out.println(jsonObject.getJSONArray("sites").getJSONObject(0).getString("name"));

    }
}

运行test结果:

总结

人生没有完满,始终存在残缺,自己的心地是自己的世界,活得不快乐,本质上源于自己的无能。一个人,应该有力量,将自己从一切沉重的、老旧的、无精打采的事物里拔出来,用不断的尝试、变通改变自己的境遇。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值