java 替换json字符串中间的引号保留两边的引号,避免json校验失败
一、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说明);
{"name":"spy","sex":"girl","age":123}

b) array:values的有序集合。
一个数组以“[”开始,以“]”结尾,values以逗号分隔(value可取何值,请参考图c) value说明);
实例1:["spy","gk"]
实例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包解析。
package cn.icbc.spy;
import java.util.List;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
class CardInfo{
String prefix;
String cardNum;
String bankId;
String bankName;
String token;
String cardType;
public void setPrefix(String prefix) {
this.prefix = prefix;
}
public void setCardNum(String cardNum) {
this.cardNum = cardNum;
}
public void setBankId(String bankId) {
this.bankId = bankId;
}
public void setBankName(String bankName) {
this.bankName = bankName;
}
public void setToken(String token) {
this.token = token;
}
public void setCardType(String cardType) {
this.cardType = cardType;
}
}
public class Main {
public static void main(String[] args){
String input = "{\"cardList\":[" +
"{\"prefix\":\"141000001\",\"cardNum\":\"622100123456789\"," +
"\"bankId\":\"001\",\"bankName\":\"ICBC\",\"cardType\":\"011\",\"token\":\"\"}," +
"{\"prefix\":\"141000002\",\"cardNum\":\"622100987654321\"," +
"\"bankId\":\"002\",\"bankName\":\"CCB\",\"cardType\":\"001\",\"token\":\"\"}" +
"]}";
JSONObject jsonObject = JSON.parseObject(input);
Object jsonArray = jsonObject.get("cardList");
List<CardInfo> list = JSON.parseArray(jsonArray+"", CardInfo.class);
for(CardInfo cardInfo:list){
System.out.println(cardInfo.prefix);
System.out.println(cardInfo.cardNum);
//...
}
}
}
注意:
(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校验失败的更多相关文章
- @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 ...
- JSON字符串-赋张最初接触后台从map转json的方法
**************************************** json数组: *************************************************** ...
- 关于java后台接入百度地图返回参数为{"status":211,"message":"APP SN校验失败"}的解决方法
1.关于百度地图,天气预报,微信公众平台等一系列权威机构java接入的认识: a.首先要认识到的是这些信息都属于外部接口,我们在进行接入的时候一定要注意到这些接口的参数设置,稍微一不留神就会出现接入失 ...
- java替换特殊字符串
开始想到String.replaceFirst(regex, replacement)和String.replaceAll(regex, replacement); 但特殊字符没替换成功. 用法:St ...
- java将JSON字符串转换为实体类对象,基于net.sf.json实现
@SuppressWarnings("unchecked") public static <T> T jsonToObject(String jsonString, C ...
- python json字符串中有int类型数字(不带引号)
def jsonfy(s:str)->object: obj = eval(s, type('js', (dict,), dict(__getitem__=lambda s, n: n))()) ...
- JSON字符串和java对象的互转【json-lib】
在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的标签,这无疑占据了网络流量,JSON在这方面则做的很好, ...
- Json字符串转换为java对象的各种实现方法【json_lib框架、Gson、org.json】
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://mengzhengbin520.blog.51cto.com/7590564/12 ...
- Json-lib 进行java与json字符串转换之一
这篇文章主要介绍了在java中,JSON字符串与java对象的相互转换实例详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下. 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.J ...
随机推荐
- 12、python单步调试工具pdb
pdb 第4种方式是启动Python的调试器pdb,让程序以单步方式运行,可以随时查看运行状态.我们先准备好程序: # err.py s = '0' n = int(s) print(10 / n) ...
- 调色板原理 & 编程
调色板原理 & 编程 逻辑调色板结构LOGPALETTE,该结构定义如下: typedef struct tagLOGPALETTE { WORD palVersion; //调色板的板本号, ...
- JSP学习 —— 开篇:JSP,servlet容器,Tomcat,servlet容器之间的关系
JSP(JAVA SERVER PAGE)的缩写,其本身就是servlet的简化,是一种动态网页标准,其特点是在HTML代码中嵌入JAVA代码,JSP标签或用户标签来生成网页.至于它为什么会出现,主要 ...
- 使用Struts2和jQuery EasyUI实现简单CRUD系统(七)——数据分页处理
上篇完毕多选删除的功能之后,接下来就是做分页功能了.曾经的分页是一个麻烦的问题.并且数据量巨大的时候,直接把这些元素取出来显然速度较慢,所以取一定区间的数据还是高效的. watermark/2/tex ...
- amazeui学习笔记--css(布局相关2)--等分网格 AVG Grid
amazeui学习笔记--css(布局相关2)--等分网格 AVG Grid 一.总结 1.与grid区别:网格中:am-g + am-u-xx-n 等分网格中只有一个: am-avg-sm-4(在u ...
- vuepress折腾记
由于格式比较乱,所以直接拿图片粘贴过来了,详情请看原文链接https://lewiscutey.github.io/blog/blog/vuepress-theme-toos.html
- ThreadPoolExecutor – Java Thread Pool Example(java线程池创建和使用)
Java thread pool manages the pool of worker threads, it contains a queue that keeps tasks waiting to ...
- 就目前市面上的面试整理来说,最全的BAT大厂面试题整理在这
原标题:就目前市面上的面试整理来说,最全的BAT大厂面试题整理在这 又到了面试求职高峰期,最近有很多网友都在求大厂面试题.正好我之前电脑里面有这方面的整理,于是就发上来分享给大家. 这些题目是网友去百 ...
- Scala入门到精通——第十九节 隐式转换与隐式參数(二)
作者:摇摆少年梦 配套视频地址:http://www.xuetuwuyou.com/course/12 本节主要内容 隐式參数中的隐式转换 函数中隐式參数使用概要 隐式转换问题梳理 1. 隐式參数中的 ...
- 算法-对分查找(二分查找)C++实现
这个是个主要的查找算法.由于仅仅是把数读入就须要(N)的时间量,因此我们在说这类问题的时候都是如果读入过的. 在算法经常使用的时间.将问题缩小为一部分(大约1/2),那么我们就觉得这个算法是O(log ...