gpt4 book ai didi

javascript - 如何在 CSV 下表示 JSON 对象

转载 作者:行者123 更新时间:2023-11-30 11:43:01 35 4
gpt4 key购买 nike

我想将一个 JSON 对象导出到一个 CSV 文件,其中的子字段具有可能由对象数组填充的子字段,但我不知道如何在 CSV 中表示嵌入数据。

最佳答案

这归结为将半结构化(树状)数据映射到表格数据。由于阻抗不匹配,这根本不是微不足道的。

在实践中有几种常用(和教授)的方法,并且经过广泛的学术研究,主要是为 XML 建立的,但原则上也可以应用于 JSON。方法或多或少归结为:

  • 临时(基于模式)映射
  • 切边
  • 树编码

首先,如果您的数据遵循常规模式(如架构),您可以设计一个临时映射,例如,可以将每个叶(值)映射到 CSV 格式的列。您可以使用点保留结构上的信息,前提是字段中尚未使用点。

例如:

{
"foo" : {
"bar" : 10
},
"foobar" : "foo"
}

可以映射到:

| foo.bar | foobar |
|---------|--------|
| 10 | foo |

棘手的部分是当游戏中有数组时。如果你有一大堆相似的对象,你可以在输出 CSV 中让它们成为所有行:

{
"objects" : [
{
"foo" : {
"bar" : 10
},
"foobar" : "foo"
},
{
"foo" : {
"bar" : 40
},
"foobar" : "bar"
},
{
"foo" : {
"bar" : 50
},
"foobar" : "bar"
}
]
}

可以映射到:

| objects.pos | objects.foo.bar | objects.foobar |
|-------------|-----------------|----------------|
| 1 | 10 | foo |
| 2 | 40 | bar |
| 3 | 50 | bar |

这是最简单的方法,因为输出的 CSV 仍然很容易理解,但它需要为每个用例重新设计它以使其适应您的数据,特别是对于数组中的不同排列。

从理论的 Angular 来看,这首先是一种特殊的方法,称为规范化数据,即将其转化为第一范式或更高范式。

还有其他更通用的方法,例如边缘分解和树编码。对于您的用例,它们可能做得过头了,因为解码它们需要相当多的工作,因此它们更适合在关系数据库之上实现复杂的 XML 查询。

简而言之,通过边缘切碎,您可以为存储叶子的每种类型(在 JSON 中为数字、字符串、 bool 值等)创建一个表(CSV 文件),并在一个表中存储边缘原始 JSON 树。

tree encoding ,您只使用一个表(CSV 文件)巧妙地存储树的所有节点和叶子。同样,它针对 XML 进行了调整,但可能会进行调整。

JSON 比 XML 更年轻,所以我不确定已经对映射到表进行了多少研究——可能还有专门针对 JSON 而不是 XML 的通用映射,即使通用原则相似。

关于javascript - 如何在 CSV 下表示 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41939648/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com