V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
shuson
V2EX  ›  程序员

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

  •  
  •   shuson · 2016-11-03 16:28:32 +08:00 · 2061 次点击
    这是一个创建于 2940 天前的主题,其中的信息可能已经有所发展或是发生改变。

    给一个合法的 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\"}";
    

    大婶们不要吝啬

    7 条回复    2016-11-03 18:37:32 +08:00
    eclipselu
        1
    eclipselu  
       2016-11-03 16:46:45 +08:00
    不需要自己手工 parse json 的话就很简单。

    https://gist.github.com/eclipselu/69d07fb265d2e1444a185cdee3682ce3
    Kilerd
        2
    Kilerd  
       2016-11-03 16:52:46 +08:00
    递归查找而已。我收藏了一个把它拍平和还原的 Python 类。 然而你是需要 java 的
    shuson
        3
    shuson  
    OP
       2016-11-03 16:54:09 +08:00
    @eclipselu 我找到了 js 的, python 的,可惜没有比较简洁 java 的,根据你的思路,我试试写一个 java 的
    shuson
        4
    shuson  
    OP
       2016-11-03 16:55:04 +08:00
    @Kilerd 找到了一个 java 的,叫 json-flattener ,实现的比较完整
    Troevil
        5
    Troevil  
       2016-11-03 17:07:42 +08:00
    ... 之前有过一个需求和你是相反的... 是把它结构化的.. 后来自己实现了
    就是 request 的 parameterMap 变成结构化的数据接口 Map<String,String[]> -> Map<String,Object>
    q397064399
        6
    q397064399  
       2016-11-03 17:37:06 +08:00
    用 Map 然后迭代 这个很简单的,算不上是算法吧
    domty
        7
    domty  
       2016-11-03 18:37:32 +08:00
    本质就是把一个多层的树压缩成一个一层的?
    递归就符合需要吧。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5307 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 06:53 · PVG 14:53 · LAX 22:53 · JFK 01:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.