2017-07-21 13 views
1

JavaScriptSerializerを使用してオブジェクトを作成するためにjson文字列を解析しようとしています。私はvb.netでサードパーティのライブラリを使用せずにオブジェクトにjson文字列を解析します。

...このような何かが、私の最後の運を実装について jsonstrは、JSON形式のデータである
Dim object As New SomeObject 
Dim js As New JavaScriptSerializer 
someObject = js.Deserialize(Of Somebject)(jsonstr) 
object1.var1 = someObject("somekey") 

を考えています。私はnewtonsoft.jsonなど

編集のようなサードパーティのライブラリを使用することはできません:私は、例えば私のクラス与えられ、いくつかの進歩を遂げプロパティ "name"を持ち、私のjsonはキー "name"を持っています。それはjsonファイルの値に関係なく、オブジェクトプロパティへの文字列を渡します。

Dim object As SomeObject = js.Deserialize(Of SomeObject)(jsonstr) 
Dim name As String = object.name //object now holds value for name 

もし私のjsonがこのようなものであれば。次のように名前を取得するにはどうすればよいですか?

"value" : { 
    "validationFactors" : [ 
    { 
     "name" : "remote_address", 
     "value" : "127.0.0.1" 
    } 
    ] 

}

私は例えばの名前を取得するためにデシリアライズを呼び出した場合、私はMissingMethodException 取得するので、どのようならば、私は私のダミーのオブジェクトを変更する必要があるとか?おかげ

+1

「私の最後に運がない」とはどういう意味ですか?エラーメッセージはありますか?それのすべてまたは一部がデシリアライズしないのですか? 'no luck'は厄介な問題の説明です – Plutonix

+1

[System.Web.Script.Serialization.JavaScriptSerializer](https://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer)を使うことができます。 MSDNのページで[newtonsoft](http://www.newtonsoft.com/json)を使用することを提案しています。プロジェクトにNuGetを含めることはかなり簡単です。なぜ「第三者の図書館は使えない」という制限があるのですか? – djv

+0

@Plutonix編集を参照してください、私は私の最初の投稿が非常に詳細ではなかったことを実現します。私の謝罪 – ponderingdev

答えて

1

はここで働く例です:

Sub Main 
    Dim js As New JavaScriptSerializer() 
    Dim someObject As SomeObject = js.Deserialize(Of SomeObject)("{""A"":""Hello"",""B"":42}") 
    Console.WriteLine("A:={0}, B:={1}", someObject.A, someObject.B) 
End Sub 

Class SomeObject 
    Public Property A As String 
    Public Property B As Integer 
End Class 

は出力:

 
A:=Hello, B:=42 

しかし、あなたは辞書のようsomeObjectにアクセスしようとしているように見えます、そしてあなたがそれを行うことができます:

以前のように
Dim someObject As Dictionary(Of String, Object) = js.Deserialize(Of Dictionary(Of String, Object))("{""A"":""Hello"",""B"":42}") 
Console.WriteLine("A:={0}, B:={1}", someObject("A"), someObject("B")) 

同じ出力。

関連する問題