求教,这种序列化后的 json 字符串如何解析?

2018-07-10 14:31:13 +08:00
 DXDE443
String jsonStr = "{\"name\":\"Jack\",\"age\":18}";

java 有没有类似于 js 的 JSON.parse 或者 eval 方法啊
3352 次点击
所在节点    Java
22 条回复
DXDE443
2018-07-10 14:33:26 +08:00
发错了,是 String jsonStr = "\"{\"name\":\"Jack\",\"age\":18}\""
yukiww233
2018-07-10 14:37:10 +08:00
new Gson().fromJson(String, Class<T>)
InternetExplorer
2018-07-10 14:38:00 +08:00
秘籍●多重字符之术
=====================
其实把 jsonStr 左右的两个引号去掉就是标准的 JSON 字符串了
DXDE443
2018-07-10 14:38:36 +08:00
还是不太对,应该是 String jsonStr = "\"{\\\"name\\\":\\\"Jack\\\",\\\"age\\\":18}\""
luozic
2018-07-10 14:41:01 +08:00
gson 等 java 里面的 json 工具库了解一下
DXDE443
2018-07-10 14:43:22 +08:00
不对不对,普通的解析我当然会,比如{"name" : 1},可我现在要解析的事"{\"name\" : 1}"这个样子的
pipixia
2018-07-10 14:43:23 +08:00
replace 一下
DXDE443
2018-07-10 14:46:49 +08:00
@DXDE443
@yukiww233
@InternetExplorer
@luozic
@pipixia 能帮忙重新看看 4 楼和 7 楼吗,我 1 楼说错了不知道怎么改
luozic
2018-07-10 14:51:12 +08:00
反序列化再处理。
execute
2018-07-10 14:59:23 +08:00
你可以试试用一下 com.alibaba.fastjson,我觉得挺好用的。有你正文里提到的 JSON.parse()方法
InternetExplorer
2018-07-10 14:59:30 +08:00
这样话就不是 JSON,让给你 JSON 的给你一个标准的 JSON
DXDE443
2018-07-10 15:01:58 +08:00
@InternetExplorer 我是调用客户系统的 webService,内容我做不了主啊
kba977
2018-07-10 15:03:30 +08:00
fastjson 直接 parse 一下就好了
![]( https://i.loli.net/2018/07/10/5b4459faec204.png)
chocotan
2018-07-10 15:05:10 +08:00
StringEscapeUtils.unescapeJson
然后去掉两头的"
DXDE443
2018-07-10 15:05:55 +08:00
我说的这个用 js 的话 JSON.parse(eval(jsonStr))然后就解决了,我不知道用 java 怎么处理
kba977
2018-07-10 15:08:13 +08:00
lululau
2018-07-10 15:13:25 +08:00
SomeJSONParser.simeParseMethod(org.apache.commons.lang.StringEscapeUtils.unescapeJava(str))
DXDE443
2018-07-10 15:13:44 +08:00
刚刚试了下,parse 一次还是字符串,parse2 次就好了,看来是我想多了,谢大佬
@kba977
feiyuanqiu
2018-07-10 15:22:46 +08:00
反斜线是 escape character

- php 可以用 stripcslashes 函数处理
- java 可以用
-- apache 的 commons-lang3 库的 StringEscapeUtils.unescapeJson() 方法
-- 或者 commons-text 库的 StringEscapeUtils.unescapeJson() 方法处理
DXDE443
2018-07-10 15:25:19 +08:00
刚刚想试 StringEscapeUtils 但本地只有 commons-lang3 的库,过时了,我强迫症不想用,又没有外网下不了 commons-text,不过还是谢各位老哥建议,老哥们说话又好听我超喜欢在这里面的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/469586

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX