簡體   English   中英

如何在c#中反序列化json對象數組

[英]How to deserilize array of json Object in c#

嗨,我想從從 Web 服務返回的 JSON 對象中讀取 Id:

[{"id":11,"username":"test5"}]

代碼:

HttpResponseMessage response = null;

using (response = httpClient.PostAsync(url, content).Result)
{
    try
    {
        response.EnsureSuccessStatusCode(); //200 Ok
        string responJsonText = response.Content.ReadAsStringAsync().Result;
        JObject res = JObject.Parse(responJsonText);
       //if ((int)res["id"][0] > 0)
       // {
            var uid = (int)res["id"][0];
            if (uid > 0)
            {
                return uid;
            }
            else
            { return 0; }
       // }
       // else
       //{ return 0; }
    } 

我如何使用 C# 從 Json Response 中讀取 Id 和用戶名?

我收到以下消息的異常:

從 JsonReader 讀取 JObject 時出錯。 當前 JsonReader 項不是對象:StartArray。 小路

解決方案 1 - 反序列化為 C# 模型:

您可以創建一個與您的 json 結構匹配的模型:

public class User
{
    [JsonProperty("id")]
    public int Id { get; set; }

    [JsonProperty("username")]
    public string Username { get; set; }
}

然后使用 Newtonsoft.Json nuget 包反序列化 json 字符串,如下所示:

string json = @"[{""id"":11,""username"":""test5""}]";
var users = JsonConvert.DeserializeObject<List<User>>(json);

解決方案 2 - 使用 JArray 解析 json

string json = @"[{""id"":11,""username"":""test5""}]";

JArray array = JArray.Parse(json);
int id = array.First["id"].Value<int>();
string username = array.First["username"].Value<string>();

我假設數組將包含至少 1 個元素,並且會有一個idusername屬性。 應添加適當的錯誤處理代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM