首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将嵌套的JSON内容转储转换为XLS

将嵌套的JSON内容转储转换为XLS
EN

Stack Overflow用户
提问于 2013-01-05 01:16:59
回答 3查看 2.4K关注 0票数 0

我有一个JSON转储从一个内容管理网站,它遵循以下格式:

代码语言:javascript
运行
复制
[
    {
        id: "obj1",
        children: [...]
    },

    {
        id: "obj2",
        children: [...]
    }

]

有2-4个嵌套级别。

将其转换为Microsoft Excel XLS的最佳方法是什么,以便以某种方式处理嵌套级别,以便能够使用Excel的客户处理其数据?

对于这个特定的数据,一种方法是为每个顶级文件夹(嵌套层)创建一个新的工作表。所有工作表都将包含从该特定文件夹中的JSON对象中选取的相同列名。

是否有现成的工具可以将JSON导入Excel?

最好是作为命令行工具,如果需要脚本,则使用Python。

EN

回答 3

Stack Overflow用户

发布于 2013-01-05 03:12:21

这取决于你的数据。

如果嵌套没有任何形式的重复,那么最简单的选择是复制所有内容,或者如果您的数据足够完整,能够在发现空白的地方假定重复,则保留空白。

这意味着作为CSV的XLS将如下所示:

代码语言:javascript
运行
复制
Element1 Element1.1 Element1.1.1 ...
Element1 Element1.1 Element1.1.2 ...
Element2 Element2.1 Element2.1.1 ...

其中每个元素都是其左侧元素的子元素。您可以看到,父对象重复的次数与其子对象的重复次数乘以每个子对象出现的次数。

您还可以创建一个包含两列的非常简单的表:

代码语言:javascript
运行
复制
**Parent**    **Child**
Element1      Element1.1
Element1.1    Element1.1.1  
Element1.1    Element1.1.2
Element2      Element2.1
Element2.1    Element2.1.1
...

元素是什么取决于您的粒度。您可以将key=values对作为字符串进行分组,也可以将多个字段组合为一个字段,然后使用正则表达式将其解析回来,也可以将所有内容分开,并将键视为一个元素,将值视为另一个元素。

最后,如果有一些规律性,那么你可以采取一种更有趣的方法,假设你有一些重复的字段名,在这种情况下,你可以采用前面的任何一种方法,但使用字段名来生成矩阵而不是列表。第一个例子很简单,因为它显然是一个已经有隐式序数头部的元组列表,第二个是一个表,看起来可能已经像一个矩阵了,但是你可以这样做。

代码语言:javascript
运行
复制
**Parent**    **Child (default)** **Repeating key1** **Repeating key2**
e1            e1.1
e1.1          e1.1.1
e.1.1.1                           something          
e.1.1         e.1.1.2
e.1.1.2                                               somethingelse

所以基本上最终你会得到一个稀疏矩阵。

在XLS上使用多张工作表存储三维矩阵的方法非常有趣,但人类的可读性可能会随之下降。归根结底就是你正在使用的数据,没有通用的解决方案

票数 2
EN

Stack Overflow用户

发布于 2013-01-05 01:21:18

我认为PHP -电子表格引擎就是您所需要的。

以下是您的查询的一些链接:

  • link 1
  • link 2

希望这篇文章能帮助你..:)

我猜你是自找的..

代码语言:javascript
运行
复制
            $excel = new SimpleExcel('csv');                    // instantiate new object (will automatically construct the parser & writer type as CSV)

           $excel->writer->setData(
               $array // this is array generated from json
            );                                                  // add some data to the writer
            $excel->writer->setDelimiter(";");                  // (optional) if delimiter not set, by default comma (",") will be used instead
            $excel->writer->saveFile('example');                
票数 1
EN

Stack Overflow用户

发布于 2021-12-26 02:28:17

只需使用flat library来展平您的对象。

代码语言:javascript
运行
复制
var flatten = require('flat')
 
flatten({
    key1: {
        keyA: 'valueI'
    },
    key2: {
        keyB: 'valueII'
    },
    key3: { a: { b: { c: 2 } } }
})

输出

代码语言:javascript
运行
复制
{
  'key1.keyA': 'valueI',
  'key2.keyB': 'valueII',
  'key3.a.b.c': 2
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14161710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档