[伸手党] 算法手残党求一段代码,关于 string 操作的

2016-11-03 16:28:32 +08:00
 shuson

给一个合法的 json 字符串:

String origin = "{\"id\":123, \"name\": \"Bible\", \"writer\":{\"id\": 1234, \"name\": \"Tom\"}}";

origin 其实是一个 nested json object 。希望经过变换,把它拍平成:

String expected = "{\"id\":123, \"name\": \"Bible\", \"writer.id\":1234, \"writer.name\": \"Tom\"}";

大婶们不要吝啬

2007 次点击
所在节点    程序员
7 条回复
eclipselu
2016-11-03 16:46:45 +08:00
不需要自己手工 parse json 的话就很简单。

https://gist.github.com/eclipselu/69d07fb265d2e1444a185cdee3682ce3
Kilerd
2016-11-03 16:52:46 +08:00
递归查找而已。我收藏了一个把它拍平和还原的 Python 类。 然而你是需要 java 的
shuson
2016-11-03 16:54:09 +08:00
@eclipselu 我找到了 js 的, python 的,可惜没有比较简洁 java 的,根据你的思路,我试试写一个 java 的
shuson
2016-11-03 16:55:04 +08:00
@Kilerd 找到了一个 java 的,叫 json-flattener ,实现的比较完整
Troevil
2016-11-03 17:07:42 +08:00
... 之前有过一个需求和你是相反的... 是把它结构化的.. 后来自己实现了
就是 request 的 parameterMap 变成结构化的数据接口 Map<String,String[]> -> Map<String,Object>
q397064399
2016-11-03 17:37:06 +08:00
用 Map 然后迭代 这个很简单的,算不上是算法吧
domty
2016-11-03 18:37:32 +08:00
本质就是把一个多层的树压缩成一个一层的?
递归就符合需要吧。

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

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

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

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

© 2021 V2EX