将JSON转换为CSV的更简单方法?

时间:2016-10-31 21:12:48

标签: angularjs json csv

我有一个非常不稳定的JSON字符串,如下所示:

[[{
    "Table":{
        "Properties":{
            "name":"ABOUT",
            "uniqueConstraints":"{}"
        },
        "Attributes": [{
            "name":"NAME",
            "unique":"true",
            "nullable":"false",
            "insertable":"false",
            "updatable":"false"
        },{
            "name":"VERSION",
            "unique":"true",
            "nullable":"false",
            "insertable":"false",
            "updatable":"false"   // I will need to go back through and add empty element for 'section'
        },{
            "name":"BUILD",           
            "insertable":"true",        
            "section": 1                
        }],
        "FileName": "About.java"
}]]

我正试图获得这样的CSV:

Entity | Property | Unique | Nullable | Insertable | Updatable | Section
=======+==========+========+==========+============+===========+=========
About  | Version  | True   | False    | False      | False     | 
About  | Build    | False  | False    | True       | False     | 1

我目前正在使用大量代码来解析这个问题,而我只是想知道是否有人知道我可以通过直接关联来实现这一目标的更简单方法:

  1. 创建一个标题数组,我们称之为header
  2. 创建一个csv数组,我们称之为csv
  3. 遍历每个文件和文件中的每个表
  4. 遍历每个表中的属性
  5. 在名为csv
  6. row内创建一个新数组
  7. 推送表名称& Table.Attr[i].namerow
  8. 解析Attr中的每个键/值(名称Attr除外)
  9. 如果密钥不在header中,请按
  10. 使用header.indexOf(key)决定应在csv[row]
  11. 中放置值的位置
  12. 完成所有工作后,请返回并向每行添加额外的空元素。
  13. 每行Join(",") + "\n"

1 个答案:

答案 0 :(得分:1)

是的,非平凡的问题。我没有尝试过,但是有一篇文章是由一个人做过的,他们已经做了一些事情。可能值几分钟的时间来看看它是否接近你所需要的https://sunlightfoundation.com/blog/2014/03/11/making-json-as-simple-as-a-spreadsheet/

他谈到处理数据数组和填充列......