GSON的JSON与对象+List的互转

以解析转换成此种字符串为例

jsonObject ==>> {"name":"Mr.wang","sex":"男"};
jsonArray ==>> [{"name":'Mr.wang","sex":"男"},{"name":"Mr.zhang","sex":"女"}];
json ==>> {"list":[{"name":"Mr.wang","sex":"男"},{"name":"Mr.zhang","sex":"女"}],"status":"success"};

我们需要定义2个实体

一个是实体, 对解析 示例中 jsonObject 和  jsonArray 解析是所用

另一个,对解析 示例中  json 解析是所用

实体中的属性名  必须与 需要解析的Json串中的 key 对应

Json'Objent  ==>>  {"name":"Mr.wang","sex":"man"}

需要一个实体类 ,里面的属性是  name , sex; 

</pre><pre name="code" class="java">public class User {
	private String name;
	private String sex;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	@Override
	public String toString() {
		return "name = " + name + ", sex = " + sex;
	}
}
</pre><p></p><p>解析示例中 json 所用</p><p><pre name="code" class="java">public class Entity {
	private String status;
	private ArrayList<User> list;

	public String getStatus() {
		return status;
	}

	public void setStatus(String status) {
		this.status = status;
	}

	public ArrayList<User> getList() {
		return list;
	}

	public void setList(ArrayList<User> list) {
		this.list = list;
	}

	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return "status = " + status + " , list = " + list;
	}
}


解析成Bean对象 与 转换成Json串

</pre><pre name="code" class="java">public class TestJson {


<span style="white-space:pre">	</span>private static String jsonObject = "{'name':'Mr.wang','sex':'男'}";
<span style="white-space:pre">	</span>private static String jsonArray = "[{'name':'Mr.wang','sex':'男'},{'name':'Mr.zhang','sex':'女'}]";
<span style="white-space:pre">	</span>private static String json = "{'list':[{'name':'Mr.wang','sex':'男'},{'name':'Mr.zhang','sex':'女'}],'status':'success'}";
<span style="white-space:pre">	</span>private static Entity entity;
<span style="white-space:pre">	</span>private static User user;
<span style="white-space:pre">	</span>private static ArrayList<User> list;
<span style="white-space:pre">	</span>private static Gson gson = new Gson();
<span style="white-space:pre">	</span>
<span style="white-space:pre">	</span>public static void main(String[] args) {
<span style="white-space:pre">		</span>
<span style="white-space:pre">		</span>//解析 jsonObject
<span style="white-space:pre">		</span>user = gson.fromJson(jsonObject, User.class);
<span style="white-space:pre">		</span>System.out.println("JsonObject to User : \n" + user.toString() + "\n");
<span style="white-space:pre">		</span>
<span style="white-space:pre">		</span>//解析 jsonArray
<span style="white-space:pre">		</span>list = gson.fromJson(jsonArray, new TypeToken<ArrayList<User>>() {}.getType());
<span style="white-space:pre">		</span>System.out.println("JsonArray to ArrayList<User> : \n" + list.toString() + "\n");
<span style="white-space:pre">		</span>
<span style="white-space:pre">		</span>//解析 json
<span style="white-space:pre">		</span>entity = gson.fromJson(json, Entity.class);
<span style="white-space:pre">		</span>System.out.println("JsonObject to Entity : \n" + entity.toString() + "\n");
<span style="white-space:pre">		</span>
<span style="white-space:pre">		</span>//==========================================
<span style="white-space:pre">		</span>
<span style="white-space:pre">		</span>//User 转换成 jsonObject
<span style="white-space:pre">		</span>String jsonObjStr = gson.toJson(user);
<span style="white-space:pre">		</span>System.out.println("User to JsonObject : \n" + jsonObjStr + "\n");


<span style="white-space:pre">		</span>//ArrayList<User> 转换成 jsonArray
<span style="white-space:pre">		</span>String jsonAryStr = gson.toJson(list);
<span style="white-space:pre">		</span>System.out.println("ArrayList<User> to JsonArray : \n" + jsonAryStr + "\n");
<span style="white-space:pre">		</span>
<span style="white-space:pre">		</span>//Entity转换成 json
<span style="white-space:pre">		</span>String json = gson.toJson(entity);
<span style="white-space:pre">		</span>System.out.println("Entity to Json : \n" + json + "\n");
<span style="white-space:pre">	</span>}
}
</pre><p></p><p>转换结果 输出</p><pre name="code" class="java">JsonObject to User : 
name = Mr.wang, sex = 男


JsonArray to ArrayList<User> : 
[name = Mr.wang, sex = 男, name = Mr.zhang, sex = 女]


JsonObject to Entity : 
status = success , list = [name = Mr.wang, sex = 男, name = Mr.zhang, sex = 女]
------------------------------------------------------------------------------------------------------------

User to JsonObject : 
{"name":"Mr.wang","sex":"男"}


ArrayList<User> to JsonArray : 
[{"name":"Mr.wang","sex":"男"},{"name":"Mr.zhang","sex":"女"}]


Entity to Json : 
{"status":"success","list":[{"name":"Mr.wang","sex":"男"},{"name":"Mr.zhang","sex":"女"}]}<span style="font-family:Arial, Helvetica, sans-serif;"><span style="white-space: normal;">
</span></span>
</pre><pre>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值