FastJson学习
json数据格式分为数组格式和对象格式
json数组格式:
var jsonArray =["元素1","元素2","元素3"]
jsonArray[0]
中括号包裹,数组中的元素之间用逗号分隔,数组元素的可以是任意类型。取值通过数组索引取值
json对象格式:
var jsonObject = {"name":"mark","age":12,"sex":won}
var name = jsonObject.name
大括号包裹,定义键值对,键必须时字符串类型,值可以是任意类型,键值之间冒号隔开,每个键值对之间逗号隔开。取值通过对象点键
(注意:所有的符号必须是英文的)
json对象格式和json数组格式相互嵌套
var jsonArray = [
{
"name":"mark","age":12
},
{
"name:tom","age":23
}
]
jsonArray[0].name
var jsonObject ={
"k1":["北京","北京","北京","北京"],
"k2":["北京","北京","北京","北京"]
}
jsonObject.k1[0];
var json = {
"k1":[
{"name":"mark","age":12},
{"name":"mark","age":12}
],
"k2":[
{"name":"mark","age":12},
{"name":"mark","age":12}
]
}
json.k1[1].name
fastJson
fastJson可以将java Bean 序列化为Json字符串,也可以将Json字符串反序列化成JavaBean
//序列化
//javaBean对象转换成json对象格式
JSON.toJSONString(javaBean);
//java集合list对象 转换成json数组格式
JSON.toJSONString(List);
//java集合map对象 转换成json对象格式
JSON.toJSONString(map);
//当需要转换的对象没有指定值的时候,可以使用SerializerFeature.WriteMapNullValue赋值null,有值的时候就序列化当前值
JSON.toJSONString(javabean,SerializerFeature.WriteMapNullValue);
JSON.toJSONString(javabean,SerializerFeature.WriteNullStringAsEmpty);
JSON.toJSONString(javabean,SerializerFeature.WriteNullNumberAsZero);
JSON.toJSONString(javabean,SerializerFeature.WriteNullBooleanAsFalse);
JSON.toJSONString(javabean,SerializerFeature.WriteDateUseDateFormat);
JSON.toJSONString(javabean,SerializerFeature.PerttyFormat);
//反序列化
//json对象格式转换成javaBean对象
JSON.parseObject("jsonstr",javaBean.class);
//json对象格式转换成java集合list对象
List<javaBean> list = JSON.parseArray("jsonstr",javaBean.class);
//json对象格式转换成java集合map对象
Map<String,javaBean> map= JSON.parseObject("jsonstr",new TypeReference<Map<String,javaBean>>(){});
注解JsonField作用在javaBean的字段上,实现个性化定制,作用在字段和方法上
@JsonField(name="自定义值")
@JsonField(ordinal="1")
@JsonField(format="YYYY-MM-dd")
@JsonField(serialize="false")
@JsonField(deserialize="false")
@JsonField(serialzeFeatures="WriteMapNullValue") //和上面的SerializerFeature用法一致的
注解@Jsontype作用在类上
@Jsontype(includes={"字段1", "字段2"}) //需要序列化的字段
//springmvc配置文件
<mvc:annotation-driven>
<!--不使用默认的消息转换器-->
<mvc:message-converters regieter-defaults="false">
<!--配置fastjson工具中的消息转换器-->
<bean id ="fastJsonConverters" class="com.alibaba.fastjson.suport.spring.FastJsonHttpMessageConverter">
<property name="supportedMediatypes">
<list>
<value>application/json;charset=utf-8</vlaue>
</list>
</property>
</bean>
</mvc:annotation-driven>