JSON 学习

JavaScript Object Notation,JS 对象标记,是一种轻量级的数据交换格式。
JSON 标准

JSON 介绍

简介

JSON 采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

JSON 是 Douglas Crockford 在2001年开始推广使用的数据格式,在2005年-2006年正式成为主流的数据格式。

语法

在 JS 语言中,一切都是对象。因此,任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型:

  • 对象表示为键值对
  • 数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数组

JSON 与 JS 对象的关系

JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。

var obj = {a: 'Hello', b: 'World'}; //这是一个对象,注意键名也是可以使用引号包裹的
var json = '{"a": "Hello", "b": "World"}'; //这是一个 JSON 字符串,本质是一个字符串

JSON 和 JS 对象互转

// 对象转换为 JSON 字符串,使用 JSON.stringify() 方法
var json = JSON.stringify({a: 'Hello', b: 'World'}); //结果是 '{"a": "Hello", "b": "World"}'

// JSON 转换为对象,使用 JSON.parse() 方法
var obj = JSON.parse('{"a": "Hello", "b": "World"}'); //结果是 {a: 'Hello', b: 'World'}

重点:特殊字符处理

json 结构里使用的标示符有:冒号:、双引号”“、大括号{}、方括号[]、逗号,
标准使用时,并没有什么问题。但如果键值是 textarea 输入的内容时,就有可能会带来特殊字符,此时就需要额外处理了,否则 JSON.parse() 时报错 Uncaught SyntaxError: Invalid or unexpected token

常见的特殊处理的转义字符

\a 响铃(BEL)、\b 退格(BS)、\e 科学计数法、\f 换页(FF)、\n 换行(LF)、\r 回车(CR)、\t 水平制表(HT)、\v 垂直制表(VT)、\\ 反斜杠、\" 双引号字符、\0 空字符(NULL)

解决

根据需要添加处理项。

/**
 * JSON 字符串特殊字符处理
 *
 * @param s
 * @return
 */
public static String string2Json(String s) {
    StringBuffer sb = new StringBuffer();
    for (int i = 0; i < s.length(); i++) {
        char c = s.charAt(i);
        switch (c) {
            case '\"':
                sb.append("\\\"");
                break;
            case '\\':
                sb.append("\\\\");
                break;
            case '/':
                sb.append("\\/");
                break;
            case '\b':
                sb.append("\\b");
                break;
            case '\f':
                sb.append("\\f");
                break;
            case '\n':
                sb.append("\\n");
                break;
            case '\r':
                sb.append("\\r");
                break;
            case '\t':
                sb.append("\\t");
                break;
            default:
                sb.append(c);
                break;
        }
    }
    return sb.toString();
}

JSON API

FastJSON、Gson和Jackson性能对比

Jackson:源代码,基于 Java 语言的开源 JSON 格式解析工具。
Gson:Google 解析Json的一个开源框架。
FastJSON:阿里巴巴开发的一个 Java 编写的 JSON 处理器。开源,使用Apache License 2.0协议开源。

-JacksonGsonFastJSON
研发Spring MVC 内置Google阿里巴巴
开源

参考

FastJSON、Gson和Jackson性能对比
fastjson这么快老外为啥还是热衷 jackson?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值