2016-07-18 12 views
1

にJsonSoftからnullにすることはできません。VB.NETで値は、私は次のようなJSONコンテンツ持たVB.NET

{ 
    "name": "alex", 
    "age": 23, 
    "codes": { 
    "1233": 1.2, 
    "1234": 2, 
    "1443": 2.4 
    } 
} 

を、私はこのような変数に値を取得する:

Dim o As JObject = JObject.Parse(jsonContent) 

Dim name as String = o.SelectToken("name"); 
Dim age as Integer = o.SelectToken("age"); 
Dim codes as JObject = o.SelectToken("codes"); 

私ができますその名前年齢が正しく解析されていますが、コードの値をcodesから取得したい場合、値がnullであるというエラーが表示されます(わからない値)

私はコードの値が、私は間違って何を {{ "1233": 1.2, "1234": 2, "1443": 2.5 }}

をやっていることがわかり自動車ウィンドウで

Dim code As Double = codes.SelectToken("1234") 
' An unhandled exception of type 'System.ArgumentNullException' occurred 
' in Newtonsoft.Json.dll 
' Additional information: Value cannot be null 

答えて

1

コードはOption Strictを使用してコンパイルされません。

Dim codes As JObject = jobj.SelectToken("codes") 
Dim code As Double = codes.SelectToken("1234") 

SelectTokenJObjectは異なるSystem.Objectから継承JToken返します。 Double暗黙的キャストの場合も同じです。これは動作します:

Dim jobj = JObject.Parse(jstr) 

Console.WriteLine(jobj("name")) 
Console.WriteLine(jobj("age")) 

Console.WriteLine(jobj("codes")("1233")) 
Console.WriteLine(jobj("codes")("1234")) 
Console.WriteLine(jobj("codes")("1443")) 

アレックス
1.2
2.4

を入力変数の場合:もちろん

Dim name As String = jobj("name").ToString() 
Dim codes = jobj("codes") 

' .Item is optional 
Dim a As Double = Convert.ToDouble(codes("1233")) 
Dim b As Double = Convert.ToDouble(codes.Item("1234")) 
Dim c As Double = Convert.ToDouble(codes.Item("1443")) 

、あなたがそれぞれを消費している場合要素をデシリアライズすることを検討する必要があります。

関連する問題