json解析

JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式,
json比xml更小、更快、更易解析

eval()用于将JSON文本转换为JS对象

FastJson,一个json工具包:
     序列化,把java对象转换为json, String text = JSON.toJSONString(user);
     反序列化,把json转换为java对象, User user = (User)JSON.parseObject(text,User.class);


四个标点符号:
   []、{}、:、,
   
    var students = [{name: 'zhang', age: 30, address: "shenzhen"}, {name: 'zhang', age: 30, address: "shenzhen"}]
    var student={name:'li',age:40,address:'shanghai'};
    student.name='chen';

可以表示的值: 数字(整形或浮点数)、字符串(双引号中)、逻辑值(true或false)、
               数组(方括号中)、对象(花括号中)、null

 

几种json解析区别? (org.json\fastjson\Gson, java\scala版)
           java版跟scala版是有点区别的!(fastjson中JSONObject与JSON用法)
 

scala版fastJson: JSON.parseObject(line)    //把json字符转转换为一个JSONObject对象
                              JSON.parseArray(line)    //把json字符转转换为一个JSONArray对象
                         
                             line.getString("regeocode")   //调用JSONObject中的方法,根据key获取值

                            line.getIntValue("status")     //返回int型值
                            line.getJSONObject("regeocode")    //调用JSONObject中的方法,根据key获取JSONObject
                         val  result =   jsonOBJ.getJSONArray("resultData")    //调用JSONObject中的方法,根据key获取JSONArray
                           val nObject: JSONObject = result.getJSONObject(0)     //获取result中的 的数组的对应的第一个JSONObject
                           JSON.parseObject(poisArray.get(i).toString)     

 

//遍历json数组                   //先判断是否存在,再取值
for(item <- array.toArray){   //遍历json数组,先转成普通数组
    if(item.isInstanceOf[JSONObject]){    //先判断再类型转换
       val jsonObject = item.asInstanceOf[JSONObject]
       jsonObject.getString("name")
    }
}

result.mkString(",")     //对应java中的StringBuffer.toString

 

---------------

将读入的一个json字符串转换成一个Java bean

        ObjectMapper objectMapper = new ObjectMapper();

        RateBean rateBean = objectMapper.readValue(value.toString(),RateBean.class);

 

 

------------------Gson工具类----------------------------------------------------

package raineye.cn.sink;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import net.sf.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

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

/**
 * @author zhangyuan
 * @create 2017/11/21 16:06
 * Gson 序列化 反序列化 工具类
 */
@SuppressWarnings("unchecked")
public class GsonUtil {
    /**
     * 我是日志
     */
    private final static Logger LOG = LoggerFactory.getLogger(GsonUtil.class);
    private static Gson gson = new GsonBuilder().create();

    /*
    * 将对象转换为json串
    * */
    public static String bean2Json(Object obj) {
        return gson.toJson(obj);
    }

    /*
    * 将字符串转换为对象
    * */
    public static <T> T json2Bean(String jsonStr, Class<T> objClass) {
        return gson.fromJson(jsonStr, objClass);
    }

    public static String jsonFormatter(String uglyJsonStr) {
        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        JsonParser jp = new JsonParser();
        JsonElement je = jp.parse(uglyJsonStr);
        String prettyJsonString = gson.toJson(je);
        return prettyJsonString;
    }

    /*
   * 解析json数据并放入map
   * */
    public static Map<String, Object> analysisData(String msg) {
        Map<String, Object> map = new HashMap<String, Object>();
        try {
            JSONObject jsonObject = JSONObject.fromObject(msg);
            Iterator<String> keys = jsonObject.keys();
            String key = null;
            Object value = null;
            while (keys.hasNext()) {
                key = keys.next();
                value = jsonObject.get(key);
                map.put(key, value);
            }
        } catch (Exception ex) {
            LOG.error(ex.getMessage() + "==" + ex.getStackTrace()[0]);
            throw ex;
        }
        return map;
    }

    /*
    * 判断json 中某个key是否存在
    * */
    public static boolean isExist(String json, String key) {
        boolean b = false;
        Map<String, Object> objectMap = analysisData(json);
        if (objectMap.containsKey(key)) {
            b = true;
        }
        return b;
    }

    /*
   * 判断json 中某个key是否存在 不存在的key 返回null
   * */
    public static Object get(String json, String key) {
        Object value = null;
        Map<String, Object> objectMap = analysisData(json);
        if (objectMap.containsKey(key)) {
            value = objectMap.get(key);
        }
        return value;
    }

    /*
  * 判断一个字符串是否为json
  */
    public static boolean isJson(String str) {
        try {
            JSONObject jsonObject = JSONObject.fromObject(str);
            return true;
        } catch (Exception e) {
            return false;
        }
    }
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值