一、json概要

JSON(JavaScript Object Notation, JS 对象标记)-一种轻量级数据交换标准(相对xml),独立于编程语言。具体以逗号分隔的key:value键值对形式体现,主要表现形式包括两种:{对象},[数组]。其中,key以string表达;value包括string、数值、boolean值、对象、数组(可嵌套)。

二、json 结构

2.1 json的两种数据结构

  • {对象},A collection of key/value pairs(一个key/value对的集合). 在不同的编程语言中,可能体现为一个 object, record, struct, dictionary, hash table, keyed list, or associative array。
  • [数组]An ordered list of values(一/多个value的有序列表).

2.2 Format of json

[说明,如下5图来自json.org]

a) object:一个无序的 key/value对集合。

如图object所示:一个object以“{”开始,以“}”结尾, key/value对以逗号分隔(key必须是String-参考d) string说明);

  1. {"name":"spy","sex":"girl","age":123}

b) array:values的有序集合。

一个数组以“[”开始,以“]”结尾,values以逗号分隔(value可取何值,请参考图c) value说明);

  1. 实例1:["spy","gk"]
  2. 实例2:[{"name":"spy","sex":"girl"},{"name":"gk","sex":"boy"}]

c) value取值

A value可以是简单的用双引号引起的string串,也可以是一个数值,or boolean值(true or false) or null, 也可以是复杂的object or an array,这些取值可以嵌套。

d) string:双引号引起的一串unicode字符

在此,要注意某些特殊的字符,需经过“\”进行转义,这些特殊字符与转义字符共同表示一个有意义的字符。

  • \” 表示”
  • \\ 表示转义字符 \
  • \t 表示一个tab

e) number

同java or c中的number(除八进制、十六进制不能表达)

三、一个复杂json串的的解析

这里使用com.alibaba.fastjson包解析。

  1. package cn.icbc.spy;
  2. import java.util.List;
  3. import com.alibaba.fastjson.JSON;
  4. import com.alibaba.fastjson.JSONObject;
  5. class CardInfo{
  6. String prefix;
  7. String cardNum;
  8. String bankId;
  9. String bankName;
  10. String token;
  11. String cardType;
  12. public void setPrefix(String prefix) {
  13. this.prefix = prefix;
  14. }
  15. public void setCardNum(String cardNum) {
  16. this.cardNum = cardNum;
  17. }
  18. public void setBankId(String bankId) {
  19. this.bankId = bankId;
  20. }
  21. public void setBankName(String bankName) {
  22. this.bankName = bankName;
  23. }
  24. public void setToken(String token) {
  25. this.token = token;
  26. }
  27. public void setCardType(String cardType) {
  28. this.cardType = cardType;
  29. }
  30. }
  31. public class Main {
  32. public static void main(String[] args){
  33. String input = "{\"cardList\":[" +
  34. "{\"prefix\":\"141000001\",\"cardNum\":\"622100123456789\"," +
  35. "\"bankId\":\"001\",\"bankName\":\"ICBC\",\"cardType\":\"011\",\"token\":\"\"}," +
  36. "{\"prefix\":\"141000002\",\"cardNum\":\"622100987654321\"," +
  37. "\"bankId\":\"002\",\"bankName\":\"CCB\",\"cardType\":\"001\",\"token\":\"\"}" +
  38. "]}";
  39. JSONObject jsonObject = JSON.parseObject(input);
  40. Object jsonArray = jsonObject.get("cardList");
  41. List<CardInfo> list = JSON.parseArray(jsonArray+"", CardInfo.class);
  42. for(CardInfo cardInfo:list){
  43. System.out.println(cardInfo.prefix);
  44. System.out.println(cardInfo.cardNum);
  45. //...
  46. }
  47. }
  48. }

注意

(1) 使用JSON.parseArray(String arg0, Class arg1)必须包含对象的set方法;

(2) 对象的属性名需与json串中的key名字保持一致;

参考1:www.json.org

感觉这位大神总结的很简洁,在此mark一下:http://blog.csdn.net/hanxujie00/article/details/52050433

更多fastjson使用,帮大家找了一个帖子:

http://xp9802.iteye.com/blog/2123450

转载请注明出处:http://blog.csdn.net/proteen/article/details/78897125

java 替换json字符串中间的引号保留两边的引号,避免json校验失败的更多相关文章

  1. @ResponseBody 返回json字符串的核心类是org.springframework.http.converter.json.MappingJacksonHttpMessageConverter,它使用了Jackson 这个开源的第三方类库。主要是以下两个jar包:jackson-core-asl-1.6.4.jar;jackson-mapper-asl-1.6.4.jar

    @ResponseBody 返回json字符串的核心类是org.springframework.http.converter.json.MappingJacksonHttpMessageConvert ...

  2. JSON字符串-赋张最初接触后台从map转json的方法

    **************************************** json数组: *************************************************** ...

  3. 关于java后台接入百度地图返回参数为{"status":211,"message":"APP SN校验失败"}的解决方法

    1.关于百度地图,天气预报,微信公众平台等一系列权威机构java接入的认识: a.首先要认识到的是这些信息都属于外部接口,我们在进行接入的时候一定要注意到这些接口的参数设置,稍微一不留神就会出现接入失 ...

  4. java替换特殊字符串

    开始想到String.replaceFirst(regex, replacement)和String.replaceAll(regex, replacement); 但特殊字符没替换成功. 用法:St ...

  5. java将JSON字符串转换为实体类对象,基于net.sf.json实现

    @SuppressWarnings("unchecked") public static <T> T jsonToObject(String jsonString, C ...

  6. python json字符串中有int类型数字(不带引号)

    def jsonfy(s:str)->object: obj = eval(s, type('js', (dict,), dict(__getitem__=lambda s, n: n))()) ...

  7. JSON字符串和java对象的互转【json-lib】

    在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的标签,这无疑占据了网络流量,JSON在这方面则做的很好, ...

  8. Json字符串转换为java对象的各种实现方法【json_lib框架、Gson、org.json】

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://mengzhengbin520.blog.51cto.com/7590564/12 ...

  9. Json-lib 进行java与json字符串转换之一

    这篇文章主要介绍了在java中,JSON字符串与java对象的相互转换实例详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下. 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.J ...

随机推荐

  1. java 之 wait, notify, park, unpark , synchronized, Condition

    1. wait notify /** * 解释: 唤醒一个等待monitor的线程, 如果有多个线程在等待,会唤醒一个. * 一个线程在等待monitor是由Object.wait引起的 * 获取一个 ...

  2. Bitmap-把方形图片处理为圆形

    这个是直接在网上转载的,自己验证可靠 转载自http://my.oschina.net/zhouz/blog/213164 直接贴上代码 import android.graphics.Bitmap; ...

  3. amazeui学习笔记二(进阶开发5)--Web 组件开发规范Rules

    amazeui学习笔记二(进阶开发5)--Web 组件开发规范Rules 一.总结 1.见名知意:见那些class名字知意,见函数名知意,见文件名知意 例如(HISTORY.md Web 组件更新历史 ...

  4. Redis-消费模式

    一 . 两种模式简介 发布消息通常有两种模式:队列模式(queuing)和发布订阅模式(qublish-subscribe).队列模式中,consumers可以同时从服务端读取消息,每个消息纸杯其中一 ...

  5. 【hdu 6000】Wash

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 因为每件衣服都是没有区别的. 只有洗衣机不同会影响洗衣时间. 那么我们把每台洗衣机洗衣的时间一开始都加入到队列中. 比如{2,3,6 ...

  6. JQ实现选项卡(jQuery原型插件扩展)

    下边分为两个版本,一种是点击切换选项(index.js),一种是滑过切换选项(index1.js) HTML文件: jq使用jquery-1.11.3.js版本 <!DOCTYPE html&g ...

  7. 关于js盒子模型的知识梳理

    盒子模型 JS盒子模型中的13个常用属性: clientWidth/clientHeight:可视区域的宽高,宽高+PADDING组成 clientTop/clientLeft:上边框和左边框的宽度 ...

  8. JS错误记录 - 记录上次登陆的用户名

    <script> //步骤 1.submit => 用户名存进cookie 2. onload => 从cookie读取用户名 window.onload = function ...

  9. 1.Python字符编码

    1.编码简介 编码的种类情况 ASCII 占1个字节,只支持英文 GB2312 占2个字节,支持6700+汉字 GBK GB2312的升级版,支持21000+汉字 ks_c_5601-1987 韩国编 ...

  10. 基于深度学习的人脸识别系统(Caffe+OpenCV+Dlib)【三】VGG网络进行特征提取

    前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...