1
DXDE443 OP 发错了,是 String jsonStr = "\"{\"name\":\"Jack\",\"age\":18}\""
|
2
yukiww233 2018-07-10 14:37:10 +08:00
new Gson().fromJson(String, Class<T>)
|
3
InternetExplorer 2018-07-10 14:38:00 +08:00
秘籍●多重字符之术
===================== 其实把 jsonStr 左右的两个引号去掉就是标准的 JSON 字符串了 |
4
DXDE443 OP 还是不太对,应该是 String jsonStr = "\"{\\\"name\\\":\\\"Jack\\\",\\\"age\\\":18}\""
|
5
luozic 2018-07-10 14:41:01 +08:00 via iPhone
gson 等 java 里面的 json 工具库了解一下
|
6
DXDE443 OP 不对不对,普通的解析我当然会,比如{"name" : 1},可我现在要解析的事"{\"name\" : 1}"这个样子的
|
7
pipixia 2018-07-10 14:43:23 +08:00
replace 一下
|
8
DXDE443 OP |
9
luozic 2018-07-10 14:51:12 +08:00 via iPhone
反序列化再处理。
|
10
execute 2018-07-10 14:59:23 +08:00
你可以试试用一下 com.alibaba.fastjson,我觉得挺好用的。有你正文里提到的 JSON.parse()方法
|
11
InternetExplorer 2018-07-10 14:59:30 +08:00
这样话就不是 JSON,让给你 JSON 的给你一个标准的 JSON
|
12
DXDE443 OP @InternetExplorer 我是调用客户系统的 webService,内容我做不了主啊
|
13
kba977 2018-07-10 15:03:30 +08:00
fastjson 直接 parse 一下就好了
![]( https://i.loli.net/2018/07/10/5b4459faec204.png) |
14
chocotan 2018-07-10 15:05:10 +08:00
StringEscapeUtils.unescapeJson
然后去掉两头的" |
15
DXDE443 OP 我说的这个用 js 的话 JSON.parse(eval(jsonStr))然后就解决了,我不知道用 java 怎么处理
|
16
kba977 2018-07-10 15:08:13 +08:00
|
17
lululau 2018-07-10 15:13:25 +08:00
SomeJSONParser.simeParseMethod(org.apache.commons.lang.StringEscapeUtils.unescapeJava(str))
|
19
feiyuanqiu 2018-07-10 15:22:46 +08:00
反斜线是 escape character
- php 可以用 stripcslashes 函数处理 - java 可以用 -- apache 的 commons-lang3 库的 StringEscapeUtils.unescapeJson() 方法 -- 或者 commons-text 库的 StringEscapeUtils.unescapeJson() 方法处理 |
20
DXDE443 OP 刚刚想试 StringEscapeUtils 但本地只有 commons-lang3 的库,过时了,我强迫症不想用,又没有外网下不了 commons-text,不过还是谢各位老哥建议,老哥们说话又好听我超喜欢在这里面的
|
21
pipixia 2018-07-10 15:27:13 +08:00
<code>jsonStr.substring(jsonStr.indexOf("\"")+1,jsonStr.lastIndexOf("\"")).replace("\\","")</code>
|
22
notreami 2018-07-10 20:01:06 +08:00
比起怎么解析,为什么不从源头让 json 字符串规范呢??
|