java json处理

1 篇文章 0 订阅

com.alibaba.fastjson
引入依赖包

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

直接上最终代码

package yyst.myTest.jsonTest;

import java.util.HashMap;
import java.util.Map;

import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.serializer.ValueFilter;

public class FjTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Map < String , Object > jsonMap = new HashMap< String , Object>();  
		jsonMap.put("c", "21");
		jsonMap.put("d", "");
		jsonMap.put("e", null);
		
		System.out.println(JSONObject.toJSONString(jsonMap));
		System.out.println(JSONObject.toJSONString(new FjBean()));
		System.out.println();
		System.out.println(JSONObject.toJSONString(jsonMap, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty));
		System.out.println(JSONObject.toJSONString(new FjBean(), SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty));
		System.out.println();
		ValueFilter valueFilter = new ValueFilter() {

			@Override
			public Object process(Object object, String name, Object value) {
				// TODO Auto-generated method stub
//				System.out.println(object);
//				System.out.println(name);
//				System.out.println(value);
				return value == null ? "" : value;
			}
			
		};
		System.out.println(JSONObject.toJSONString(jsonMap, valueFilter));
		
		System.out.println("\r\nstring to object");
		System.out.println(JSONObject.parseObject(JSONObject.toJSONString(jsonMap, valueFilter), Map.class));
		System.out.println(JSONObject.parseObject(JSONObject.toJSONString(new FjBean(), SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty), FjBean.class));
	}

}

class FjBean{
	public String a1 = "a";
	public String a2 = null;
	public String getA1() {
		return a1;
	}
	public void setA1(String a1) {
		this.a1 = a1;
	}
	public String getA2() {
		return a2;
	}
	public void setA2(String a2) {
		this.a2 = a2;
	}
	
}

输出

{"c":"21","d":""}
{"a1":"a"}

{"c":"21","d":"","e":null}
{"a1":"a","a2":""}

{"c":"21","d":"","e":""}

string to object
{c=21, d=, e=}
yyst.myTest.jsonTest.FjBean@15615099

特别说明一下null值的处理。默认情况下,如果值为null,将不会输出。这在与其它语言的交互中非常容易出现bug。根据个人经验,转成空字符串可以适应更多的场景。上面代码中,通过加入SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty ,可以处理bean的情况。
但是当处理对象为Map时,无法正确转换。网上有不少Map处理的示例,但是都无法重现,有可能是版本问题,因为我在1.2.9的源码中未发现相关处理(读的不全,如有错误欢迎指正)。因此使用了自定义过滤器的方法。
https://github.com/alibaba/fastjson/wiki/ContextValueFilter

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
处理嵌套json格式的数据。。。 public static void main(String[] args) { // 官方API http://www.json.org/java/ /* 购物车中信息 goods_cart={cart_1325036696007:{goods_id:"100015",goods_name:"澳大利亚进口绵羊",goods_imgsrc:"http://192.168.1.180:7001//gwadmin/uploadimg/spxc/2011/12/9/100016_00948703_68.jpg",specs:"b555bfj05d7dcg307h91323398584156",specsstr:"颜色:黑色 尺寸:L",price:4765,stock:15,count:6},cart_1325036702105:{goods_id:"100015",goods_name:"澳大利亚进口绵羊",goods_imgsrc:"http://192.168.1.180:7001//gwadmin/uploadimg/spxc/2011/12/9/100016_00948703_68.jpg",specs:"787a9f5he93chcifh951323398314484",specsstr:"颜色:黑色 尺寸:XL",price:4700.15,stock:12,count:1},cart_1325136643984:{goods_id:"100015",goods_name:"澳大利亚进口绵羊",goods_imgsrc:"http://192.168.1.180:7001//gwadmin/uploadimg/spxc/2011/12/9/100015_00399656_68.jpg",specs:"8466347bi6eia43hd6j1323398639859",specsstr:"颜色:灰色 尺寸:XL",price:4600,stock:3,count:1}}; * **/ try{ String s0 = "{cart_1325036696007:{goods_id:"100015",goods_name:"澳大利亚进口绵羊",goods_imgsrc:"http://192.168.1.180:7001//gwadmin/uploadimg/spxc/2011/12/9/100016_00948703_68.jpg",specs:"b555bfj05d7dcg307h91323398584156",specsstr:"颜色:黑色 尺寸:L",price:4765,stock:15,count:6},cart_1325036702105:{goods_id:"100015",goods_name:"澳大利亚进口绵羊",goods_imgsrc:"http://192.168.1.180:7001//gwadmin/uploadimg/spxc/2011/12/9/100016_00948703_68.jpg",specs:"787a9f5he93chcifh951323398314484",specsstr:"颜色:黑色 尺寸:XL",price:4700.15,stock:12,count:1},cart_1325136643984:{goods_id:"100015",goods_name:"澳大利亚进口绵羊",goods_imgsrc:"http://192.168.1.180:7001//gwadmin/uploadimg/spxc/2011/12/9/100015_00399656_68.jpg",specs:"8466347bi6eia43hd6j1323398639859",specsstr:"颜色:灰色 尺寸:XL",price:4600,stock:3,count:1}};"; String s= java.net.URLDecoder.decode(s0, "utf-8"); System.out.println(s); JSONObject o = new JSONObject(s); System.out.println(o.get("cart_1325036696007")); //根据属性,获取值 System.out.println(o.toString()); //得到字符串 System.out.println(o.names().get(2)); //获取对象中第三组属性名 System.out.println(o.names().length()); //获取对象中属性个数 //System.out.println(o.names().getJSONArray(1)); //获取对象中属性个数 //names(jsonObjectName) 私有方法 获取该对象的所有属性名,返回成JSONArray。 //JSONObject.getNames(jsonObjectName) 静态方法 获取对象的所有属性名,返回成数组。 System.out.println(JSONObject.getNames(o.getJSONObject("cart_1325036696007"))[1]); System.out.println(o.getJSONObject("cart_1325036696007").names().get(1)); System.out.println(o.length()); //共有几组对象 System.out.println(o.has("cart_1325036696007")); //有无该该值 /* 遍历json中的每一组元素*/ String name = null; JSONObject t_o = null; for(int i=0; i<o.length(); i++){ name = JSONObject.getNames(o)[i]; System.out.println("商品项ID:"+name); t_o = o.getJSONObject(name); for(int j=0; j< t_o.length(); j++){ name = JSONObject.getNames(t_o)[j]; System.out.print(name+":"+t_o.get(name)+" "); } System.out.println(); } }catch(Exception e){ e.printStackTrace(); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值