【发布时间】:2019-05-26 17:18:45
【问题描述】:
我想将一个大的 JSON 文件 (~600MB) 反序列化为 DataGridView 而不会遇到“maxJsonLength”错误。
我的代码适用于小型 JSON 文件。但对于更大的 JSON 文件,我得到“maxJsonLength”错误。由于我不是最有经验的编码员,是否有解决此问题的解决方法或简单方法?
Private Sub BtnOpenFile_Click(sender As Object, e As EventArgs) Handles BtnOpenFileOld.Click
OpenFileDialog1.InitialDirectory = "C:\"
If OpenFileDialog1.ShowDialog = DialogResult.Cancel Then
End If
Dim JSonFilePath As String = File.ReadAllText(OpenFileDialog1.FileName)
LblFilePath.Text = OpenFileDialog1.FileName
DataGridView1.Rows.Clear()
DataGridView1.Refresh()
Dim dict As Object = New JavaScriptSerializer().Deserialize(Of List(Of Object))(JSonFilePath)
For Each item As Object In dict
DataGridView1.Rows.Add(item("EMail").ToString, item("Timestamp").ToString, item("Number").ToString)
Next
End Sub
我的 JSON 文件看起来像
[
{
"EMail": "one@mail.com",
"Timestamp": "2019-05-25T21:24:06.799381+02:00",
"Number": 206074,
"randomtrash1": "notneeded",
"randomtrash2": "notneeded",
"randomtrash3": "notneeded",
"randomtrash4": "notneeded",
"randomtrash5": "notneeded",
"randomtrash6": "notneeded",
"randomtrash7": "notneeded",
"randomtrash8": "notneeded",
"randomtrash9": "notneeded"
},
{
"EMail": "two@mail.com",
"Timestamp": "2019-05-25T21:24:06.8273826+02:00",
"Number": 7397,
"randomtrash1": "notneeded",
"randomtrash2": "notneeded",
"randomtrash3": "notneeded",
"randomtrash4": "notneeded",
"randomtrash5": "notneeded",
"randomtrash6": "notneeded",
"randomtrash7": "notneeded",
"randomtrash8": "notneeded",
"randomtrash9": "notneeded",
"randomtrash10": "notneeded",
"randomtrash11": "notneeded",
"randomtrash12": "notneeded",
"randomtrash13": "notneeded",
"randomtrash14": "notneeded",
"randomtrash15": "notneeded",
"randomtrash16": "notneeded",
"randomtrash17": "notneeded",
"randomtrash18": "notneeded",
"randomtrash19": "notneeded",
"randomtrash20": "notneeded",
"randomtrash21": "notneeded"
}
]
【问题讨论】:
-
你为什么使用
JavaScriptSerializer?为什么不json.net 甚至DataContractJsonSerializer? -
如果您确定要使用
JavaScriptSerializer,那么这是 The length of the string exceeds the value set on the maxJsonLength property 的副本,但是有更好的解决方案可以让您直接从文件流式传输,而无需预先加载到600-1200 MB 字符串。 -
因为我不知道如何使用 json.net 我找到的关于 json.net 的所有示例都在 c# 中。所以“JavaScriptSerializer”对我来说似乎是最简单的方法,它工作得很好,直到我达到 maxJsonLength
-
all examples I found about json.net have been in c#仅供参考,您可以随时将这些示例转换为 VB.NET,地址为this web site。
标签: json vb.net datagridview json.net json-deserialization