java 替换字符串中的引号_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}

object.gif

b) array:values的有序集合。

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

实例1:["spy","gk"]

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

array.gif

c) value取值

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

value.gif

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

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

\” 表示”

\\ 表示转义字符 \

\t 表示一个tab

string.gif

e) number

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

number.gif

三、一个复杂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 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名字保持一致;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值