跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • Java 中的 JSON 转 map
未分類
5 2 月 2022

Java 中的 JSON 转 map

Java 中的 JSON 转 map

資深大佬 : lslvxy 26

JAVA 中的 JSON 转 map

有一个 json 字符串

 {   a:1,      b:{     c:2,     d:3   } }  

怎么转换为平铺的 map 格式

期望结果是

"a"=1  "b.c"=2  "b.d"=3  

有多重嵌套,展开就是 a.b.c.d 这种形式的

大佬有話說 (8)

  • 資深大佬 : devswork

    用递归。
    思路:写一个解析方法,if(data.type==jsonobject),则调用本身方法传递 data 。如果 if(data.type !=jsonobject)则解析 key 和 value ,并返回 k,v 。然后做好父 k 拼接子 k 就可以了

  • 資深大佬 : jackmrzhou

    算法题。简单点感觉可以先用 lib 解析字符串,然后递归 format. 写了一个伪代码 没试过不知道对不对
    function toMap(json JSON) map[string, string] {
    res = map[string,string]
    for k,v in json
    for _k, _v in toMap(v)
    res += (k + “.” + _k) -> _v
    return res
    }
    function fmt (json JSON) string[] {
    if (json.type == string) return string[]{val}
    toMap(json).map((k,v) => k + “=” + v)
    }

  • 資深大佬 : jackmrzhou

    .. 发出来格式没了

  • 資深大佬 : clf

    简单粗暴点遍历就行。参考我毕业前的一个玩具其中的一小部分:
    https://github.com/lychs1998/CatMock/blob/master/src/main/java/cn/myzju/mock/CatContainer.java
    put 方法里的是你要的。

  • 資深大佬 : clf

    @clf #4 里面应该还处理了 “a.b[0]” = x1,”a.b[1]”=x2

  • 資深大佬 : zhady009

    https://github.com/wnameless/json-flattener
    可以看看这个

  • 資深大佬 : xsqfjys

    你面试还是项目用?项目用的话 fastJson 和 org.json 都有自带的转 map 方法

  • 資深大佬 : ye4tar

    请仔细阅读 flatMap 方法

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具