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