这个问题困扰了我好几个月,现在,无论我读了多少文章和主题,我都没有得到好的信息......
我想向返回JSON文件的服务器发送请求。我想获取这些结果并将它们加载到本地计算机上的表中。最好是Access或Excel,这样我就可以对数据进行排序和操作。
有没有办法做到这一点......?请帮忙!!
答案 0 :(得分:2)
Google提出了这个问题:json2excel。
或者编写自己的小应用程序。
修改强>
我决定很好,为你编写一个python3应用程序。在命令行上使用,如python jsontoxml.py infile1.json infile2.json
,它将输出infile1.json.xml和infile2.json.xml。
#!/usr/bin/env python3
import json
import sys
import re
from xml.dom.minidom import parseString
if len(sys.argv) < 2:
print("Need to specify at least one file.")
sys.exit()
ident = " " * 4
for infile in sys.argv[1:]:
orig = json.load(open(infile))
def parseitem(item, document):
if type(item) == dict:
parsedict(item, document)
elif type(item) == list:
for listitem in item:
parseitem(listitem, document)
else:
document.append(str(item))
def parsedict(jsondict, document):
for name, value in jsondict.items():
document.append("<%s>" % name)
parseitem(value, document)
document.append("</%s>" % name)
document = []
parsedict(orig, document)
outfile = open(infile + ".xml", "w")
xmlcontent = parseString("".join(document)).toprettyxml(ident)
#http://stackoverflow.com/questions/749796/pretty-printing-xml-in-python/3367423#3367423
xmlcontent = re.sub(">\n\s+([^<>\s].*?)\n\s+</", ">\g<1></", xmlcontent, flags=re.DOTALL)
outfile.write(xmlcontent)
示例输入
{"widget": {
"debug": "on",
"window": {
"title": "Sample Konfabulator Widget",
"name": "main_window",
"width": 500,
"height": 500
},
"image": {
"src": "Images/Sun.png",
"name": "sun1",
"hOffset": 250,
"vOffset": 250,
"alignment": "center"
},
"text": {
"data": "Click Here",
"size": 36,
"style": "bold",
"name": "text1",
"hOffset": 250,
"vOffset": 100,
"alignment": "center",
"onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
}
}}
示例输出
<widget>
<debug>on</debug>
<window title="Sample Konfabulator Widget">
<name>main_window</name>
<width>500</width>
<height>500</height>
</window>
<image src="Images/Sun.png" name="sun1">
<hOffset>250</hOffset>
<vOffset>250</vOffset>
<alignment>center</alignment>
</image>
<text data="Click Here" size="36" style="bold">
<name>text1</name>
<hOffset>250</hOffset>
<vOffset>100</vOffset>
<alignment>center</alignment>
<onMouseUp>
sun1.opacity = (sun1.opacity / 100) * 90;
</onMouseUp>
</text>
</widget>
答案 1 :(得分:1)
这可能有些过分,但MongoDB使用JSON样式的文档作为原生格式。这意味着您可以直接插入JSON数据,只需很少或不需要修改。它可以自己处理JSON数据,而不必跳过箍来强制您的数据采用更加RDBMS友好的格式。
它是开源软件,适用于大多数主要平台。它还可以处理大量数据和多个服务器。
它的命令shell可能不像Excel或Access那么容易使用,但是它可以自己进行排序等,如果你发现你需要的话,大多数编程语言都有绑定(例如C,Python和Java)做更棘手的事情。
编辑:
为了从/向其他更常见的格式导入/导出数据,MongoDB有几个useful utilities。虽然你应该记住JSON使用结构化对象,但要想直接映射到基于表格的模型(如CSV),尤其是在像MongoDB这样的无模式数据库上,也不容易使用CSV。
将JSON转换为CSV或任何其他RDBMS友好格式接近(如果它没有直接输入)字段或Object-Relational Mapping,这通常既不简单也不容易自动化。
例如,MongoDB工具允许您创建CSV文件,但您必须指定每个列中的哪个字段,隐式假设您的数据中实际存在某种模式。
MongoDB允许您存储和操作结构化JSON数据,而不必经历繁琐的映射过程,而不是非常令人沮丧。您将不得不修改您的思维方式,稍微偏离传统的数据库表格视图,但它允许您处理要处理的数据,而不是尝试强制表格模型。
答案 2 :(得分:0)
Json(与xml一样)是一个树而不是文字的元素表。您需要手动填充表(基本上是一堆SQL LEFT JOINS
)或填充一堆表并手动操作连接。
或JSON扁平包装? MAY 可以做你要问的事情,我只是指出没有保证。
如果它是一个快速的kludge,并且数据是flatpacked,那么快速脚本来读取json,转储到csv然后在Excel中打开可能是最简单的。
答案 3 :(得分:0)
我想,无法轻松存储在Access或Excel中。你必须用任何支持它的编程语言解析json字符串(PHP,NodeJS,Python,...都有本机支持),然后使用库输出带有数据的Excel表。
根据您对编程语言的精通程度,其他可能是一个选项是使用类似ElasticSearch搜索引擎或CouchDB数据库的东西,它们本身都支持json输入。然后,您可以使用它们以各种方式查询内容。
答案 4 :(得分:0)
我以前做过那样的事。将JSON转换为HTML表格。这意味着,你可以变成csv。 但是这里有一些你需要知道的东西 1)JSON数据必须格式化为预定义的结构。 e.g。
{
[
['col1', 'col2', 'col3'],
[data11, data12, data13],
...
]
}
2)U必须逐行逐列解析数据。如果可能的话,你必须处理丢失的数据或不匹配的列。当然,您必须了解数据类型。
3)我的经验是,如果你有大量可笑的数据,那么这样做会杀死客户端的浏览器。您必须逐步从服务器获取格式化的HTML或CSV数据。
正如上面的夜间工具所建议的,试试谷歌工具。 :)