【解決方法】json文字列をjsonオブジェクトに変換するにはどうすればよいですか?


以下はjson文字列です

[
  {
   "attributes": {
    "TRACKNAME": "A1",
    "SEGSEQUENCE": 1,
    "LRS_SEGMENT": "A11",
    "FROM_CHM": 0.0,
    "TO_CHM": 3425.13
   }
  },
  {
   "attributes": {
    "TRACKNAME": "A1",
    "SEGSEQUENCE": 2,
    "LRS_SEGMENT": "A12",
    "FROM_CHM": 3382.14,
    "TO_CHM": 8022.48
   }
  },
  {
   "attributes": {
    "TRACKNAME": "A1",
    "SEGSEQUENCE": 3,
    "LRS_SEGMENT": "A13",
    "FROM_CHM": 7980.12,
    "TO_CHM": 8845.55}
}]

以下のような2つのクラスを作成しました。

public class LRSSegment {
    public string TRACKNAME { get; set;}
    public int SEGSEQUENCE { get; set; }
    public string LRS_SEGMENT { get; set; }
    public double FROM_CHM { get; set; }
    public double TO_CHM { get; set; }
}

public class LRSAttribues
{
    public IList<LRSSegment>lrsAttribute { get; set; }
}

次に、このコード行を通じて json 文字列を json オブジェクトに変換したいと思います。

LRSAttribues lrsSeg = JsonSerializer.Deserialize<LRSAttribues>(jString); 
 // Got error

ただし、エラーが発生しました。 私のコードの何が間違っているのでしょうか? ご指摘いただければありがとうございます。

私が試したこと:

How to Convert a json string to json object in net6?

解決策 1

引用:

エラーが発生しました

そしてあなたは私たちに伝えることが重要だとは思わなかった エラーが発生しましたか?

JSON は、というプロパティを持つ単一のオブジェクトを表します。 features。 このプロパティにはオブジェクトの配列が含まれており、各オブジェクトには と呼ばれるプロパティが含まれています。 attributes。 このプロパティには、一致すると思われる単一のオブジェクトが含まれています LRSSegment クラス。

これを逆シリアル化するには、C# クラスが JSON 構造と一致する必要があります。

C#
public class Root
{
    [JsonProperty("features")]
    public Feature[] Features { get; set; }
}

public partial class Feature
{
    [JsonProperty("attributes")]
    public LRSSegment Attributes { get; set; }
}
C#
Root lrsSeg = JsonSerializer.Deserialize<Root>(jString);

迷った場合は、JSON から C# クラスを生成するために使用できるツールがたくさんあります。たとえば、次のようになります。 クイックタイプ.io[^]。

Visual Studio には、「JSON をクラスとして貼り付ける」ための「形式を選択して貼り付け」オプションもあります。
JSON または XML をクラスとして貼り付ける – Visual Studio (Windows) | Microsoft Learn[^]

コメント

タイトルとURLをコピーしました