【解決方法】匿名配列を C# クラスに変換する方法


こんにちは、みんな、
私は次のようなjsonを持っています

["G6863","2010368363","201030821","NewData","Latest"]

上記のJSONをfellowngのc#クラスに変換したい

C#
public Class classified{
public string GId{set;get}
public string UID{set;get}
public string UDATE{set;get}
public string MESSAGE{set;get}
public string UPDATEREASON{set;get}
}

多くのファイルに書き込む必要があるため、汎用にしたい

私が試したこと:

だから私は次のことを試しました

C#
var SerializedText=["G6863","2010368363","201030821","NewData","Latest"]
JsonConvert.DeserializeObject(SerializedText, typeof(classified)) as classified

しかし、それはfallowingエラーを投げています

現在の JSON 配列を逆シリアル化できません (例: [1,2,3]) をタイプ ‘classified’ に変換します。これは、型が正しく逆シリアル化するために JSON オブジェクト ({“name”:”value”} など) を必要とするためです。
このエラーを修正するには、JSON を JSON オブジェクト (例: {“name”:”value”}) に変更するか、逆シリアル化された型を配列、または List JSON 配列からデシリアライズできます。 JsonArrayAttribute を型に追加して、強制的に JSON 配列から逆シリアル化することもできます。
パス ”、行 1、位置 1。

解決策 1

このような要件については、クラス コンストラクターを使用できます。 見る: コンストラクター (C# プログラミング ガイド) | Microsoft Docs[^]

解決策 2

次のようなものを使用できます。

C#
using System.Text.Json;

namespace TestDictionary;

internal class Program
{
    static void Main(string[] args)
    {
        string response = "[\"G6863\",\"2010368363\",\"201030821\",\"NewData\",\"Latest\"]";
        var deserializedResponse = JsonSerializer.Deserialize<string[]>(response);

        var data = new Classified(deserializedResponse);

        // Do something...
    }
}

public class Classified
{
    public string GId { set; get; }
    public string UID { set; get; }
    public string UDATE { set; get; }
    public string MESSAGE { set; get; }
    public string UPDATEREASON { set; get; }

    public Classified(string[] data)
    {
        GId = data[0];
        UID = data[1];
        UDATE = data[2];
        MESSAGE = data[3];
        UPDATEREASON = data[4];
    }
}

コメント

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