Json 这一行代码有什么问题?

Json 这一行代码有什么问题?,json,vb.net,json.net,Json,Vb.net,Json.net,双引号只是转义字符。实际字符串是 dim json2=Newtonsoft.Json.Linq.JObject.Parse("[{""currency_code"":""1ST"",""cash"":""0"",""reserved"":""0""},{""currency_code"":""8BT"",""cash"":""0"",""reserved"":""0""}]") 正如您所看到的,这是一个合法的json。 基本上,它看起来像一个合法的json数组。我想把它转换成一个字符串数组 基

双引号只是转义字符。实际字符串是

dim json2=Newtonsoft.Json.Linq.JObject.Parse("[{""currency_code"":""1ST"",""cash"":""0"",""reserved"":""0""},{""currency_code"":""8BT"",""cash"":""0"",""reserved"":""0""}]")
正如您所看到的,这是一个合法的json。 基本上,它看起来像一个合法的json数组。我想把它转换成一个字符串数组

基本上我想把它变成

[{"currency_code":"1ST","cash":"0","reserved":"0"},{"currency_code":"8BT","cash":"0","reserved":"0"}]
首先,我将其解析为一个jobject和d。。。。。。。。。。。。我失败了

这是一个合法的json。为什么我不能将其解析为jobject

一些背景

我创建了2个json帮助函数来帮助我解析任何json。一种是将json转换为字典。另一种方法是将json解析为数组。事实上,整个json要么是字典(嵌套的要么不是嵌套的),要么是数组(嵌套的要么不是嵌套的)。我说的对吗

现在代码是:

{
"{""currency_code"":""1ST"",""cash"":""0"",""reserved"":""0""}",
"{""currency_code"":""8BT"",""cash"":""0"",""reserved"":""0""}"
}
代码有点有用

然后我做了

Public Shared Function jObjectToDictionary(json As String) As Generic.Dictionary(Of String, String)
    Dim json1 = JObject.Parse(json)
    Dim dict = json1.ToObject(Of Generic.Dictionary(Of String, Object))
    Dim dict2 = dict.ToDictionary(Function(x) x.Key, Function(x) x.Value.ToString)
    Return dict2
End Function

Public Shared Function jObjectToArray(json As String) As Generic.List(Of String)
    Dim json2 = JObject.Parse(json)
    Dim ar = json2.ToObject(Of Generic.List(Of Object))
    Dim ar2 = ar.ConvertAll(Function(x) x.ToString)
    Return ar2
End Function
然后我检查了为什么jObjectToArray不工作,它导致了我认为应该工作但不工作的一行代码


这就是我要问的。如果你能解决这一行代码的问题,我就能解决剩下的问题。

JObject.Parse失败的原因是因为你的JSON代表一个对象数组,而不仅仅是一个对象。您可以分辨出来,因为JSON以方括号开始和结束
[
]
,而不是表示单个对象的大括号
{
}
。要解析数组,需要使用
JArray.parse
。(注意,您还可以使用
JToken.Parse
——它将解析单个对象或数组。)


Demo fiddle:

Json字符串中的“”是什么?“”有效的Json字符串应类似[{“货币代码”:“1”,“现金”:“0”,“保留”:“0”},{“货币代码”:“8BT”,“现金”:“0”,“保留”:“0”}]是。这就是代码。哦,双引号只是vb.net的转义字符是的,实际字符串只有一个引号。前缀@是dotNet对符号@we got jarray,jtoken,jobject后面字符串中的特殊字符进行转义的方法,它们之间有什么区别?我知道jarray是数组。但是jtoken和jobject是一样的,对吧?@J.change-See。
    Dim jsonar = jsonHelper.jObjectToDictionary(_jsonResult)(starttoken) 'works
    Dim ar1 = jsonHelper.jObjectToArray(jsonar) 'doesn't work
Dim json2 = Newtonsoft.Json.Linq.JArray.Parse("[{""currency_code"":""1ST"",""cash"":""0"",""reserved"":""0""},{""currency_code"":""8BT"",""cash"":""0"",""reserved"":""0""}]")