fastjson常规使用
1、Json串的单引号和双引号问题
正确的JSON是这样的:属性名必须用双引号包裹
var json = '{"name":"imooc"}'; // 这个是正确的JSON格式
var json = "{\"name\":\"imooc\"}"; // 这个也是正确的JSON格式
var json = '{name:"imooc"}'; // 这个是错误的JSON格式,因为属性名没有用双引号包裹
var json = "{'name':'imooc'}"; //这个也是错误的JSON格式,属性名用双引号包裹,而它用单引号
// 检验JSON格式是否正确,可以使用 JSON.parse(json); 如果是正确的JSON格式,会返回一个对象,否则会报错
// 如果是对象的话,属性名可以不用双引号包裹
var obj = {name:"imooc"};
var obj = {"name":"imooc"};
var obj = {'name':'imooc'};
var obj = {"name":'imooc'};
var obj = {'name':"imooc"};
1、json格式一般包括七部分组成:[ ](中括号) 、{}(大括号)、key、value、:(冒号)、''(单引号)、""(双引号)。
2、json格式在解析时是按照从左到右解析的,如果遇到格式不对就会报错。如多个空格,多个引号或非字符。
2、JSONObject和JSONArray
{"key": "value"} //JSONObject(对象) 类似于Map<String,Object>
[{"key1": "value1"}, {"key2": "value2"}] //JSONArray(数组)类似于List<Object>
private static String str="{\"person\":\"weiwei\",\"photos\":[{\"id\":1,\"name\":\"head\"},{\"id\":2,\"name\":\"body\"}]}"; @org.junit.Test public void testJson(){ JSONObject jsonObject = JSONObject.parseObject(str); String person = jsonObject.getString("person"); System.out.println("person:"+person); JSONArray photos = jsonObject.getJSONArray("photos"); JSONObject object = photos.getJSONObject(1); System.out.println("name:"+object.getString("name")); }
遍历数组json
String json = "[{\"companyId\":\"111111111\",\"companyName\":\"Huuuu\",\"_uid\":10,\"_index\":0,\"_state\":\"modified\"}," +
"{\"companyId\":\"000000000000000000\",\"companyName\":\"cx01\",\"_uid\":11,\"_index\":1,\"_state\":\"modified\"}," +
"{\"companyId\":\"9999999999999\",\"companyName\":\"ttt\",\"_uid\":12,\"_index\":2,\"_state\":\"modified\"}]";
@org.junit.Test
public void testJSON(){
List<HashMap> list = JSON.parseArray(json, HashMap.class);
for(int i=0;i<list.size();i++){
System.out.println(list.get(i).get("companyId"));
}
JSONArray jsonArray = JSONObject.parseArray(json);
Iterator iter = jsonArray.iterator();
while (iter.hasNext()){
JSONObject jsonObject= (JSONObject) iter.next();
System.out.println(jsonObject.getString("companyName"));
}
}

取出name4值过程步骤:1,将以上字符串转换为JSONArray对象;2,取出对象的第一项,JSONObject对象;3,取出name1的值JSONObject对象;4,取出name2的值JSONObject对象;5,取出name4的值value2。
JSONArray getJsonArray=JSONArray.fromObject(arrayStr);//将结果转换成JSONArray对象的形式
JSONObject getJsonObj = getJsonArray.getJSONObject(0);//获取json数组中的第一项
String result=getJsonObj.getJSONObject("name1").getJSONObject("name2").getJSONObject("name4");
JSON与List的相互转换
@org.junit.Test public void testJson2List(){ List<Order> list=new ArrayList(); Order order_1 = new Order(); order_1.setOrderId("1"); order_1.setBuyerName("Jim"); Order order_2=new Order(); order_2.setOrderId("2"); order_2.setBuyerName("tom"); list.add(order_1); list.add(order_2); String orderJson = JSON.toJSONString(list); System.out.println(orderJson); List<Order> orders = JSON.parseObject(orderJson, new TypeReference<List<Order>>() { }); System.out.println("orders:"+orders); List<Order> orderList = JSON.parseArray(orderJson, Order.class); System.out.println("orderList:"+orderList); }
浙公网安备 33010602011771号