38

JSON 文字列があり、それを逆シリアル化するための助けが必要です。

私にとっては何もうまくいきませんでした...これはJSONです:

{
    "response": [{
        "loopa": "81ED1A646S894309CA1746FD6B57E5BB46EC18D1FAff",
        "drupa": "D4492C3CCE7D6F839B2BASD2F08577F89A27B4ff",
        "images": [{
                "report": {
                    "nemo": "unknown"
                },
                "status": "rock",
                "id": "7e6ffe36e-8789e-4c235-87044-56378f08m30df",
                "market": 1
            },
            {
                "report": {
                    "nemo": "unknown"
                },
                "status": "rock",
                "id": "e50e99df3-59563-45673-afj79e-e3f47504sb55e2",
                "market": 1
            }
        ]
    }]
}

クラスの例がありますが、それらのクラスを使用する必要はありません。他のクラスを使用してもかまいません。

これらはクラスです:

public class Report
{
    public string nemo { get; set; }
}

public class Image
{
    public Report report { get; set; }
    public string status { get; set; }
    public string id { get; set; }
    public int market { get; set; }
}

public class Response
{
    public string loopa { get; set; }
    public string drupa{ get; set; }
    public Image[] images { get; set; }
}

public class RootObject
{
    public Response[] response { get; set; }
}

私は既に Newtonsoft.Json を持っているので、そこからいくつかの機能を使用できます。

これどうやってするの?

4

12 に答える 12

21

C# 2010 以降を使用している場合は、動的型を使用できます。

dynamic json = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonstring);

次に、ドット表記を使用して動的オブジェクトの属性と配列にアクセスできます。

string nemo = json.response[0].images[0].report.nemo;
于 2013-05-02T13:31:05.587 に答える
9

最初に使用するnewtonsoft.jsonパッケージをインストールしてから、次のコードを追加します。Visual StudioNuGet Package Manager

ClassName ObjectName = JsonConvert.DeserializeObject < ClassName > (jsonObject);
于 2016-07-13T10:56:42.007 に答える
4

shareInfo はクラス:

public class ShareInfo
        {
            [JsonIgnore]
            public readonly DateTime Timestamp = DateTime.Now;
            [JsonProperty("sharename")]
            public string ShareName = null;
            [JsonProperty("readystate")]
            public string ReadyState = null;
            [JsonProperty("created")]
            [JsonConverter(typeof(Newtonsoft.Json.Converters.UnixDateTimeConverter))]
            public DateTime? CreatedUtc = null;
            [JsonProperty("title")]
            public string Title = null;
            [JsonProperty("getturl")]
            public string GettUrl = null;
            [JsonProperty("userid")]
            public string UserId = null;
            [JsonProperty("fullname")]
            public string Fullname = null;
            [JsonProperty("files")]
            public GettFile.FileInfo[] Files = new GettFile.FileInfo[0];
        }

// POST request.
            var gett = new WebClient { Encoding = Encoding.UTF8 };
            gett.Headers.Add("Content-Type", "application/json");
            byte[] request = Encoding.UTF8.GetBytes(jsonArgument.ToString());
            byte[] response = gett.UploadData(baseUri.Uri, request);

            // Response.
            var shareInfo = JsonConvert.DeserializeObject<ShareInfo>(Encoding.UTF8.GetString(response));
于 2016-08-31T22:40:06.040 に答える
4

シナリオがありましたが、これが役に立ちました

JObjectobjParserd = JObject.Parse(jsonString);

JObjectarrayObject1 = ( JObject)objParserd["d"];

DmyOutput= JsonConvert.DeserializeObject <D>(arrayObject1.ToString());

于 2015-08-20T08:38:40.350 に答える
1

私は以下を使用しています:

    using System.Web.Script.Serialization;       

    ...

    public static T ParseResponse<T>(string data)
    {
        return new JavaScriptSerializer().Deserialize<T>(data);
    }
于 2013-05-02T14:08:10.743 に答える
0

Newtonsoft.JSONこれを実現するには、nuget パッケージを使用できます。

JsonConvert.DeserializeObject<List<Response>>(yourJsonString)
于 2019-12-04T13:34:00.573 に答える