Kamitora
V2EX  ›  问与答

请问如何解析一个 Map 和 List 多级嵌套形式的 JSON(十万行左右)?

  •  1
     
  •   Kamitora · Mar 2, 2020 · 3111 views
    This topic created in 2309 days ago, the information mentioned may be changed or developed.

    基本功能:记录每一个层级 key 所对应的 value。

    原始需求:根据 JSON,还原成一个个对应的数据库...

    这种情况是写递归还是说有现成的轮子可以使用?

    谢谢 🙏

    9 replies    2020-03-02 13:40:25 +08:00
    qyvlik
        1
    qyvlik  
       Mar 2, 2020   ❤️ 1
    你使用的编程语言和环境?
    Torpedo
        2
    Torpedo  
       Mar 2, 2020   ❤️ 1
    如果预先知道 json 的结构,可以手写个解析器优化下
    Kamitora
        3
    Kamitora  
    OP
       Mar 2, 2020
    @qyvlik 还没想好用什么😓,只要能解决这个问题就行...
    tiiis
        4
    tiiis  
       Mar 2, 2020   ❤️ 1
    qyvlik
        5
    qyvlik  
       Mar 2, 2020   ❤️ 1
    @Kamitora 如果是我的话,用 java,先用 fastjson 解析成 JSON 对象,然后直接按 JSON 对象的结构进行遍历,然后按要求写到 RDS 数据库。
    另外的做法就是,将 这个 JSON 字符串解析好后,分批插入 mongo ( mongo 单个 document 有大小限制,可修改),mongo 有 js、java、go 等语言的开发库。
    Mutoo
        6
    Mutoo  
       Mar 2, 2020   ❤️ 1
    stream-json 专门处理大 json,流式处理的过程中正好可以获得各级的 key 和 value
    gwy15
        7
    gwy15  
       Mar 2, 2020
    十万行也不大啊,正常做就行,不用特别优化
    lavanil
        8
    lavanil  
       Mar 2, 2020
    val path = "examples/src/main/resources/people.json"
    val peopleDF = spark.read.json(path)
    love
        9
    love  
       Mar 2, 2020
    10w 不多啊,内存不够加内存。

    当然能改原始输出格式就最好了,这类都要改成单行一个 JSON 文档的风格方便流式处理。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2098 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 16:12 · PVG 00:12 · LAX 09:12 · JFK 12:12
    ♥ Do have faith in what you're doing.