Java生成JSON数据

      后台开发由于业务需求,需要把多个第三方api返回的json结果封装成统一的返回数据模型。我的解决办法就是先把第三方返回的结果一个一个拿出来,然后再封装成自己想要的json格式。这其中就涉及到用生成json数据的问题,首先给大家讲一下json的常见形式。

     json的格式是:{key:value}  数组的格式是[ ]。[{key:value},{key:value}]这样就是一个json数组,{key:[{key:value},{key:value}]}这样就是一个json中的value的值是一个json数组。

推荐一个好用的json格式化工具http://www.json.cn,把json数据复制到这里面就能看的很清楚各数据之间的层级关系。

    下面讲一下java怎么生成json数据。

方法一:单个属性组装的方法

        import com.google.gson.JsonArray;
	import com.google.gson.JsonObject;
	
	public static void main(String[] args) {
		//创建一个json对象,相当于一个容器,当然这个容器还可以套在另外一个容器里面,这个看业务需要
		JsonObject jsonContainer =new JsonObject();
		//为当前的json对象添加键值对
		jsonContainer.addProperty("category", "nba");
		jsonContainer.addProperty("team", "lakers");
		
		//构建json数组,数组里面也是json
		JsonArray arrayPlayer = new JsonArray();
		
		//构建json数组中的对象
		JsonObject player1 = new JsonObject();
		player1.addProperty("name", "kobe");
		player1.addProperty("height", "198cm");
		player1.addProperty("weight", "115kg");
		
		JsonObject player2 = new JsonObject();
		player2.addProperty("name", "fisher");
		player2.addProperty("height", "183cm");
		player2.addProperty("weight", "85kg");
		
		//将json对象添加到数组中
		arrayPlayer.add(player1);
		arrayPlayer.add(player2);
		
		//最后将json数组装到jsonContainer中
		jsonContainer.add("player", arrayPlayer);
		
		System.out.println(jsonContainer);
	}
生成的结果:

方法二:利用Gson传入对象的方式:

1.封装的对象(省略了getter和setter方法)

public class AdsVo  {

	private static final long serialVersionUID = 4243745170036457009L;

	private String pid;
	private String title;
	private Integer adsType;
	private Integer action;
	private String url;
	private String imgUrl;
	private List<String> extImgUrl;
	private String deeplink;
}

2.生成JSON

public static void main(String[] args) {
		List<String> extImgUrlList = new ArrayList<>();
		extImgUrlList.add("extImgUrl1");
		extImgUrlList.add("extImgUrl2");
		
		AdsVo adsVo = new AdsVo();
		adsVo.setPid("1001");
		adsVo.setTitle("这是kundy的博客");
		adsVo.setAdsType(1);
		adsVo.setAction(1);
		adsVo.setUrl("www.baidu.com");
		adsVo.setImgUrl("www.baidu.com/blog.png");
		adsVo.setExtImgUrl(extImgUrlList);
		adsVo.setDeeplink("www.deeplink.com");
		
		//对象转json
		Gson gson =new Gson();
		String json = gson.toJson(adsVo);
		System.out.println(json);
	}

3.生成的结果


附加一个json转对象的方法

	public static void main(String[] args) {
		
		String jsonString = "{\"pid\":\"1001\",\"title\":\"这是kundy的博客\",\"adsType\":1,\"action\":1,\"url\":\"www.baidu.com\",\"imgUrl\":\"www.baidu.com/blog.png\",\"extImgUrl\":[\"extImgUrl1\",\"extImgUrl2\"],\"deeplink\":\"www.deeplink.com\"}";
		Gson gson = new Gson();
		//json转对象
		AdsVo adsVo = gson.fromJson(jsonString, AdsVo.class);
		System.out.println(adsVo);
	}


  • 13
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值