JSON使用指南

【JSON】JavaScript Object Notation(JavaScript 对象表示法)

JSON的特点:

1、JSON 是存储和交换文本信息的语法。类似 XML,但JSON 比 XML 更小、更快,更易解析。
2、轻量级的文本数据交换格式。 
3、独立性:JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。 目前非常多的动态(PHP,             JSP,.NET)编程语言都支持JSON。

JSON还定死了字符集必须是UTF-8,表示多语言就没有问题了。为了统一解析,JSON的字符串规定必须用双引号"",Object的键也必须用双引号""。

JSON数据的形式:

JSON存储的是文本形式,也就是一串字符串。只不过元素会使用特定的符号标注。 
{} 双括号表示对象
[] 中括号表示数组
"" 双引号内是属性或值
: 冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个数组或对象)
key 和 value 中使用冒号(:)分割。
每个 key/value 对使用逗号(,)分割。

下面开始搞代码:Jar包申明:  import com.alibaba.fastjson.*;

构建JSON

>1 直接构建

JSONObject jo = new JSONObject();//构建JSONObject对象
LoftUnit object = new LoftUnit();
object.setQtype("building");
HashMap<String,Object> map = new HashMap<>();
map.put("map",new Object());
jo.put("name","中誠信");//String
jo.put("age", 27);//Int
jo.put("object",object);//Object
jo.put("map",map) ; // Map JSONObject本身也是实现了map接口
log.info(jo.toJSONString());

直接构建即直接实例化一个JSONObject对象,而后调用其put()方法,将数据写入。put()方法的第一个参数为key值,必须为String类型,第二个参数为value,可以为null、boolean、double、int、long、Object、Map以及Collection等。当然,double以及int等类型只是在Java中,写入到json中时,统一都会以Number类型存储

>2 对象和JSON转换

// 创建对象
LoftUnit object2 = new LoftUnit();
object2.setQtype("building");
// 对象转json
String str = JSON.toJSON(object2).toString();
log.info("str =" + str);
// json转对象
LoftUnit loftUnit = JSON.parseObject(str, LoftUnit.class);
log.info("loftUnit" + loftUnit.toString());

解析JSON

解析json主要是基本类型如Number、boolean等,与数组Array。

基本类型的解析直接调用JSONObject对象的getXxx(key)方法,如果获取字符串则getString(key),布尔值则getBooleanValue (key),以此类推。

数组的解析稍微麻烦一点,需要通过JSONObject对象的getJSONArray(key)方法获取到一个JSONArray对象,再调用JSONArray对象的get(i)方法获取数组元素,i为索引值。

@Test
public void jsonToList() {
    String s = "{\"data\":[{\"data\":[{\"address\":\"车公庄大街9号院\",\"similarWord\":\"五栋大楼\",\"districtFullName\":\"西城区\",\"residentialareaName\":\"五栋大楼\",\"communityId\":\"149ac9ce-292c-11e5-ac2c-288023a0e898\"}" +
                                    ",{\"address\":\"北街家园观宇园\",\"similarWord\":\"高教大楼\",\"districtFullName\":\"昌平区\",\"residentialareaName\":\"北街家园五区\",\"communityId\":\"14af46f4-292c-11e5-ac2c-288023a0e898\"}]" +
                          ",\"Success\":true}]" +
                ",\"guid\":\"2c190796-ccbe-41f6-9f12-4c45dd9e63f5\"" +
                ",\"success\":true}\n";
    // 字符串转为JSON对象
    JSONObject object = JSON.parseObject(s);
    //JSONObject jsonObject = JSONObject.parseObject(s);
    log.info("object=" + object);
    log.info("guid=" + object.getString("guid"));
    if(object.getBooleanValue("success")) {
        // JSON对象转化成JSON数组
        JSONArray ja = object.getJSONArray("data");
        log.info("ja=" + ja);
        // 获取数据
        String str =  object.getJSONArray("data").getJSONObject(0).getString("data");
        log.info("str" + str);
        // 字符串转集合
        List<MatchCommunity> list= JSONArray.parseArray(str,MatchCommunity.class);
        log.info("list" + list);
    }
}

前端JSON处理

JavaScript 程序能够使用内建的 eval() 函数,用 JSON 数据来生成原生的 JavaScript 对象。

扫描二维码关注公众号,回复: 3387427 查看本文章

访问对象值

 可以使用点号(.)来访问对象的值:

var myObj, x;
myObj = { "name":"runoob", "alexa":10000, "site":null }; 
x = myObj.name;

 也可以使用中括号([])来访问对象的值:

var myObj, x; 
myObj = { "name":"runoob", "alexa":10000, "site":null }; 
x = myObj["name"];

访问数组

可以使用索引值来访问数组

myObj = { "name":"网站", "num":3, "sites":[ "Google", "Runoob", "Taobao" ] }
x = myObj.sites[0];

  ① 修改数组值

可以使用索引值来修改数组值:

myObj.sites[1] = "Github";

 删除数组元素

可以使用 delete 关键字来删除数组元素:

delete myObj.sites[1];

JSON.parse() //将数据转换为 JavaScript 对象。

JSON.stringify()//将 JavaScript 对象转换为字符串。

猜你喜欢

转载自blog.csdn.net/csdn_0911/article/details/82751404