Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays VB.NET JSON数组的JSON数组-反序列化_Arrays_Json_Vb.net - Fatal编程技术网

Arrays VB.NET JSON数组的JSON数组-反序列化

Arrays VB.NET JSON数组的JSON数组-反序列化,arrays,json,vb.net,Arrays,Json,Vb.net,我有一个json返回,看起来是这样的: {"coin1":{"available":"0.00000000","onOrders":"0.00000000","btcValue":"0.00000000"}, "coin2":{"available":"0.00000000","onOrders":"0.00000000","btcValue":"0.00000000"}, "coin3":{"available":"0.00000000","onOrders":"0.00000000","

我有一个json返回,看起来是这样的:

{"coin1":{"available":"0.00000000","onOrders":"0.00000000","btcValue":"0.00000000"},
 "coin2":{"available":"0.00000000","onOrders":"0.00000000","btcValue":"0.00000000"},
 "coin3":{"available":"0.00000000","onOrders":"0.00000000","btcValue":"0.00000000"}
 }
我正在尝试将其返回到“coinName”列表中

我正在做:

Public Class coinName
    Public Vals As cValues
End Class

Public Class cValues
    Public available As String
    Public onOrders As String
    Public btcValue As String
End Class
我正在使用以下代码进行反序列化:

Dim pData = JsonConvert.DeserializeObject(Of List(Of coinName))(bals)
“bals”是字符串形式的json返回

我收到以下错误:

An unhandled exception of type 'Newtonsoft.Json.JsonSerializationException' occurred in Newtonsoft.Json.dll

Additional information: Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'System.Collections.Generic.List`1[WindowsApplication21.coinName]' because the type requires a JSON array (e.g. [1,2,3]) to deserialize correctly.

To fix this error either change the JSON to a JSON array (e.g. [1,2,3]) or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.

Path '1CR', line 1, position 7.
Newtonsoft.Json.Json.JsonSerializationException类型的未处理异常发生在Newtonsoft.Json.dll中
其他信息:无法将当前JSON对象(例如{“名称”:“值”})反序列化为类型“System.Collections.Generic.List`1[WindowsApplication21.coinName]”,因为该类型需要JSON数组(例如[1,2,3])才能正确反序列化。
若要修复此错误,请将JSON更改为JSON数组(例如[1,2,3]),或更改反序列化类型,使其成为可以从JSON对象反序列化的正常.NET类型(例如,不是integer之类的基元类型,也不是数组或列表之类的集合类型)。还可以将JsonObjectAttribute添加到类型中,以强制它从JSON对象反序列化。
路径“1CR”,第1行,位置7。
任何帮助都将不胜感激


谢谢。

我不知道他是否能帮到你,我对VB.NET中的JSON没有太多的知识,但我设法得到了第一个硬币。要记住的是,类的名称必须与JSON中的名称相同:

Dim final As String = ""
Dim json As String = TextBox1.Text
Dim coincollection = JsonConvert.DeserializeObject(Of coinCollection)(json) ' Deserialize array of Post objects
Dim coins = coincollection.coin
If coins.Length = 1 Then ' or whatever condition you prefer
   final = coins(0).available
End If
我的JSON输入是:

{"coin":[{"available":"0.00000000","onOrders":"0.00000000","btcValue":"0.00000000"}],
 "coin":[{"available":"0.00000000","onOrders":"0.00000000","btcValue":"0.00000000"}],
 "coin":[{"available":"0.00000000","onOrders":"0.00000000","btcValue":"0.00000000"}]
 }
我使用的两个类是:

Public Class coinCollection
    Public coin() As coinName
End Class
Public Class coinName
    Public available As String
    Public onOrders As String
    Public btcValue As String
End Class
数组名称需要与JSON中的名称相同,因此:coin


但是,包装器只获取第一个coin对象,也许您可以尝试了解如何读取所有对象。

您的根JSON容器不是一个数组-它是一个具有各种
N
格式的变量属性名的对象。可以将具有可变属性名称的此类对象反序列化到字典中:

Dim pData = JsonConvert.DeserializeObject(Of Dictionary(Of String, cValues))(bals)
有关文档,请参阅和


示例。

我认为您的JSON结构不正确。JSON数组应该如下:
“cars”:[“Ford”、“BMW”、“Fiat”]
你不应该使用{}所以回到结构上来,我认为你仍然缺少[]基本上你应该有的:
“coin3”:[{“available”:“0.00000000”,“onOrders”:“0.00000000”,“btcValue”:“0.00000000”}]
试着用正确的JSON运行代码,看看它是否有效。{“coin1”:[{“可用”:“0.00000000”,“onOrders”:“0.00000000”,“btcValue”:“0.00000000”}],“coin2”:[{“可用”:“0.00000000”,“onOrders”:“0.00000000”,“btcValue”:“0.00000000”}],“coin3”:[{“可用”:“0.00000000”,“onOrders”:“0.00000000”,“btcValue”:“0.00000000”}仍然不起作用