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);
    }

  

 

   

    

posted on 2019-09-22 15:18  溪水静幽  阅读(340)  评论(0)    收藏  举报