alibaba.fastjson.JSON

本文介绍了一种使用Java解析JSON数据的方法,并通过一个具体示例展示了如何将JSON字符串转换为Java对象,进而获取所需数据。

JSON数据各种解析,最近刚好用到感觉还不错
http://jingyan.baidu.com/article/c74d6000672e450f6b595d53.html
这里只举一个例子,以下为String类型的json串:

{“returnCode”:“00000000”,“returnMsg”:“操作成功”,“QueueInfo”:[{“QueueNum”:“J001”,“StrCustName”:“张三”,“WaitNum”:“0”,“CustGrade”:“0”,“PrintTime”:“2016-12-19 09:37:48”}]}

	public static void main(String[] args) {
		//转义
		String jsonStr="{\"returnCode\":\"00000000\",\"returnMsg\":\"操作成功\",\"QueueInfo\":[{\"QueueNum\":\"J001\",\"StrCustName\":\"张三\",\"WaitNum\":\"0\",\"CustGrade\":\"0\",\"PrintTime\":\"2016-12-19  09:37:48\"}]}";
		//先转成对象
		JSONObject json =JSONObject.parseObject(jsonStr);
		//这时候来点简单的
		String returnCode=json.getString("returnCode");
		String returnMsg=json.getString("returnMsg");
		
		//System.out.println(returnCode);
		//System.out.println(returnMsg);
		
		//然后对应QueueInfo,注意它对应的value是 List<Map<String,String>> 类型的
		String queueInfo=json.getString("QueueInfo");
		List<Map<String,String>> list = JSON.parseObject(queueInfo,new TypeReference<List<Map<String,String>>>(){});
		
		//大家可以测试下list.get(0).get("StrCustName")
		
		for(Map<String,String> lis:list){
			System.out.println(lis);
			System.out.println(lis.get("StrCustName"));
		}
	}
com.alibaba.fastjson.JSON.toJSONString() 方法能够处理 null 值,并提供了多种序列化选项来控制 null 值的输出形式。默认情况下,fastjson 在序列化时会忽略值为 null 的字段,但可以通过配置特定的 `SerializerFeature` 来改变这一行为。 例如,使用 `SerializerFeature.WriteMapNullValue` 可以强制输出值为 null 的字段。此外,还可以通过 `SerializerFeature.WriteNullStringAsEmpty`、`SerializerFeature.WriteNullNumberAsZero`、`SerializerFeature.WriteNullBooleanAsFalse` 等选项来分别控制字符串、数字、布尔类型的 null 值输出形式[^4]。 以下是一个示例,展示如何使用 `SerializerFeature.WriteMapNullValue` 来输出 null 值: ```java import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFeature; public class Main { public static void main(String[] args) { MyObject obj = new MyObject(); String jsonString = JSON.toJSONString(obj, SerializerFeature.WriteMapNullValue); System.out.println(jsonString); } } class MyObject { private String name; private Integer age; // getters and setters public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } } ``` 在上述代码中,如果 `name` 和 `age` 都为 null,输出的 JSON 字符串将包含这些字段,并且它们的值为 null。如果不使用 `SerializerFeature.WriteMapNullValue`,则这些字段将被忽略。 此外,fastjson 还支持通过 `ValueFilter` 接口自定义 null 值的处理逻辑。例如,可以将 null 值转换为空字符串: ```java import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.ValueFilter; public class Main { private static ValueFilter valueFilter = (Object object, String name, Object value) -> value == null ? "" : value; public static void main(String[] args) { MyObject obj = new MyObject(); String jsonString = JSON.toJSONString(obj, valueFilter); System.out.println(jsonString); } } ``` 在这个例子中,所有 null 值都会被转换为空字符串 `""`[^1]。 ### 相关问题 1. 如何在 Java 中安全地处理可能为 null 的对象? 2. 有哪些 Java 库可以帮助避免 NullPointerException? 3. 在 Java 中,如何使用 Optional 类来处理可能为 null 的值?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值