用位置索引spark动态解析json

qvtsj1bj  于 2021-05-17  发布在  Spark
关注(0)|答案(0)|浏览(358)

我正在尝试将一个通用的json动态地转换成键值字符串(至少3级嵌套)。e、 g:json:

{
    "a": {
        "d": "1",
        "e": "2",
        "f": "3",
        "g": {
            "h": [{
                "i": "4",
                "j": "5",
                "k": "6",
                "l": true,
                "m": true,
                "n": 1821,
                "o": false
            }, {
                "i": "7",
                "g": "8",
                "l": false,
                "m": false,
                "o": false
            }]
        },
        "l": false
    },
    "b": {
        "p": {
            "q": {
                "h": [{
                    "i": "7",
                    "g": "8",
                    "l": false,
                    "m": false,
                    "o": false,
                    "r": "FALSE"
                }, {
                    "i": "4",
                    "j": "5",
                    "k": "6",
                    "l": true,
                    "m": true,
                    "n": 1821,
                    "o": false,
                    "r": "FALSE"
                }]
            }
        },
        "s": [{
            "t": {
                "u": ["xxx:*"],
                "v": "333",
                "w": "10"
            }
        }],
        "x": [{
            "y": "DEFAULT"
        }]
    },
    "c": {
        "z": "100",
        "zz": "2020-11-06T07:15:25.836Z"
    }
}

结果:键值字符串的位置类似:

Key,Value,PositionIndex
a.d,1,1
a.e,2,1
a.f,3,1
a.g.h.i,1
a.g.h.j,5,1
a.g.h.k,6,1
a.g.h.l,True,1
a.g.h.m,True,1
a.g.h.n,1821,1
a.g.h.o,False,1
a.g.h.i,7,2
a.g.h.g,8,2
a.g.h.l,False,2
a.g.h.m,False,2
a.g.h.o,False,2
a.l,False,1
b.p.q.h.i,7,1
b.p.q.h.g,8,1
b.p.q.h.l,False,1
b.p.q.h.m,False,1
b.p.q.h.o,False,1
b.p.q.h.r,FALSE,1
b.p.q.h.i,4,2
b.p.q.h.j,5,2
b.p.q.h.k,6,2
b.p.q.h.l,True,2
b.p.q.h.m,True,2
b.p.q.h.n,1821,2
b.p.q.h.o,False,2
b.p.q.h.r,FALSE,2
b.s.t.u,["xxx:*"],1
b.s.t.v,333,1
b.s.t.w,10,1
b.x.y,DEFAULT,1
c.z,100,1
c.zz,2020-11-06T07:15:25.836Z,1
  • 逗号(,)是结果文件的字段分隔符。这里的键是json的扁平字符串,值是json的值,重要的是位置索引,如果键在第一次出现(不是在数组中)时基本上是1,主要的意义是在结构级别的数组中,在数组中有多个结构,因此对于结构级别的数组,它会增加,在数组中有第二个结构或第三个结构。任何人都可以帮我用任何语言解决Spark。在这里键可能会来任何东西,所以不能使用硬编码字符串值的关键来解析让我知道如果有任何想法,我可以怎么做呢

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题