【发布时间】:2015-06-18 07:54:40
【问题描述】:
JSON 文件(非常大)和脚本如下。
脚本
Dim JsonContents As String = IO.File.ReadAllText(filePath)
Dim doc As XmlDocument = CType(JsonConvert.DeserializeXmlNode("{""root"":" + JsonContents + "}", "root"), XmlDocument)
Dim Document As New XDocument
Dim query As String
Document = XDocument.Parse(doc.OuterXml)
query = "importJSON"
Dim CMD As New SqlCommand(query)
CMD.Parameters.Add("@type", SqlDbType.Int).Value = importType
CMD.Parameters.Add("@xmlObject", SqlDbType.Xml).Value = Document.ToString
......
JSON 文件
[{“ID”:“001”,“NAME”:“Den.Y”,“GENDER”:“M”,年龄:“18”}]
我想将其转换为 XML,然后传递给 SQL 服务器。但我发现 JSON 太大,然后在
处抛出 "System Out Of Memory Exception" Dim doc As XmlDocument =
CType(JsonConvert.DeserializeXmlNode("{""root"":" + JsonContents +
"}", "root"), XmlDocument)
我不知道如何修改脚本以便在不耗尽内存的情况下转换大型 JSON 文件,但小型 JSON 在此脚本上可以正常工作。
我在网上搜索,有人建议使用XMLReader,但我不知道如何处理。
[解决方案]
感谢大家的努力。最后,我将大的 JSON 文件剪掉,以防止脚本内存不足。现在它适用于大型 JSON。
【问题讨论】:
-
Converting JSON to XML 的可能重复项
-
当
JsonConvert.DeserializeXmlNode返回一个XmlDocument 时,为什么你有CType?我希望删除它不会有帮助,但值得一试。另外,您是否可以选择运行为 x64 而不是 x86 编译的程序? -
@ElektroStudios:我尝试删除不必要的语句,问题依旧存在。
-
@AndrewMorton:我删除了CType,问题依然存在。 'System.OutOfMemoryException' 在这个声明中被抛出: Dim JsonXMLDoc As XmlDocument = JsonConvert.DeserializeXmlNode("{root:" + JsonContents + "}", "root")
-
***** 如果我的 JSON 文件为 55MB,则必须抛出“System.OutOfMemoryException”。如果是 33MB,“System.OutOfMemoryException”是幸运的。如果小于 5MB,则一直运行良好