gson解析JSON——内存对象和实体对象

java真的难用

具体操作代码有详细说明,绝对能用,字符串 转 json对象!

package com.helloword;

import org.junit.Test;
import org.springframework.boot.test.context.SpringBootTest;

import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;

//@RunWith(SpringRunner.class)
@SpringBootTest
public class GzfDemoApplicationTests {

	@Test
	public void contextLoads() {
		/* json字符串反序列化成内存对象 */
		String str = "{a:34,'b':'kk',ee:'hello'}"; /* 注意里面键值对两种写法都可以 */
		JsonParser jp = new JsonParser();/* Gson 的解析类型 不要用Gson类哟 */
		JsonElement jt = jp.parse(str); /* 不能直接得到内存对象进行操作,先成为json内存的子序列 */
		System.out.println(jt.toString());
		System.out.println(jt.getAsJsonObject().get("ee"));/* JsonElement转成json内存对象才能用 */

		/* gson操作jsonarray */
		String arrstr = "['ee',344,{a:34,'b':'kk'}]";
		JsonParser jpar = new JsonParser(); /* Gson 的解析类型 不要用Gson类哟 */
		JsonElement ef = jpar.parse(arrstr);
		System.out.println(ef.toString());
		System.out.println(ef.getAsJsonArray().get(2));/* JsonElement转成json内存对象才能用 */

		/***
		 * 值得注意的使JsonElement
		 * 可以是任意对象(内存对象或者实体对象),ef.getAsJsonArray().add(bool);添加子元素需要先转换
		 ***/

		/* Gson 实体对象操作 对象转json */
		Gson gson = new Gson();
		人 张三 = new 人(); /* 实例化 */
		张三.姓名 = "张三";
		张三.年龄 = 29;
		JsonElement ele = gson.toJsonTree(张三);/* 复杂的json可以用这个 */
		System.out.println(ele);
		System.out.println(gson.toJson(张三));/* 简单的json用这个 */

		/* Gson 实体对象操作 Json转对象 */
		String gsonstr = "{\"姓名\":\"李四\",\"年龄\":20}";
		人 李四 = gson.fromJson(gsonstr, 人.class);
		System.out.println(李四.姓名);

	}

	class 人 {
		String 姓名;
		int 年龄;
	}

}

结果:

{"a":34,"b":"kk","ee":"hello"}
"hello"
["ee",344,{"a":34,"b":"kk"}]
{"a":34,"b":"kk"}
{"姓名":"张三","年龄":29}
{"姓名":"张三","年龄":29}
李四

忘了说:JsonObejct 可能直接生成内存对象,创建Json

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值