DOBON.NETプログラミング道掲示板

■35408 / 1階層)  JSONの複雑な入れ子内部の値を取りたい。
□投稿者/ Hongliang 大御所(639回)-(2023/05/08(Mon) 21:24:21)
  • アイコン> TextBox1.Text = jsonNode("Feature").Item("Id").ToString
    > 「System.InvalidOperationException: 'The node must be of type 'JsonObject'.'」

    > "Feature": ['・・・・・・・・・・・・・・・・・・・・・・・・・・・D
    > {
    > "Id": "8d8acd6f1e7d81d5d10a9a18e8e927ec",

    Featureは配列型ですね。
    jsonNode("Feature")(0)("Id")
    のように、Featureの、先頭要素の、Idプロパティ、とアクセスする必要があります。

    > TextBox1.Text = jsonNode("Property").ToString
    > TextBox1.Text = jsonNode("Station").ToString
    > 「System.NullReferenceException: 'Object reference not set to an instance of an object.'System.Text.Json.Nodes.JsonNode.this[string].get が Nothing を返しました。」

    jsonNodeがルート指したままであれば(Parseしたのを代入したままで再代入していないのであれば)、jsonNodeはこのJSONのルートオブジェクトを指しています。
    JSONのルートオブジェクトは、ResultInfoとFeatureの2つのプロパティしか持っていないので、("Property") や ("Station") は何も返すことができません。
    Dim feature As JsonNode = jsonNode("Feature")(0)
    としたうえで
    .Text = feature("Property").ToString()
    .Text = feature("Property")("Station").ToString()
    とか、更に
    Dim prop As JsonNode = feature("Property")
    .Text = prop.ToString()
    .Text = prop("Station").ToString()
    とするとかする必要があります。

    お使いのVisual Studioによっては、「形式を指定して貼り付け」を使えるかもしれません。
    https://qiita.com/Midoliy/items/362bbb95a5c78c6aa401
    // VBでも使えるかどうかは不明。
    あるいはJSONからC#クラスへの変換はネットにサービスとしても存在しているので、
    https://json2csharp.com/
    さらにC#-VB変換サービスを適用することでもクラス生成はできそうです。

    これらでクラスを生成できれば、JsonNodeを使わずとも、
    System.Text.Json.JsonSerialzier.Deserialize(Of 生成したクラス)
    メソッドを使ってオブジェクトとして扱うことができます。
違反を報告
削除キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←JSONの複雑な入れ子内部の値を取りたい。 /けい →Re[2]: JSONの複雑な入れ子内部の値を取りたい。 /けい
 
上記関連ツリー

Nomalアイコン JSONの複雑な入れ子内部の値を取りたい。 / けい (23/05/08(Mon) 15:13) #35407
Nomalアイコン JSONの複雑な入れ子内部の値を取りたい。 / Hongliang (23/05/08(Mon) 21:24) #35408 ←Now
  └Nomalアイコン Re[2]: JSONの複雑な入れ子内部の値を取りたい。 / けい (23/05/09(Tue) 10:38) #35409
    └Nomalアイコン Re[3]: JSONの複雑な入れ子内部の値を取りたい。 / けい (23/05/09(Tue) 15:28) #35410 解決み!

All 上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信

Mode/  Pass/


- Child Tree -