簡體   English   中英

C# - 從 JSON 響應中獲取值並將它們分配給變量

[英]C# - Get values from JSON response and assign them to variables

我編寫了這些代碼行,它們發出 API 請求,作為回報,我得到了有效的 JSON 響應:

using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(_baseAddress);
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                HttpResponseMessage response = await client.GetAsync(_apiUrl);

                if (response.IsSuccessStatusCode)
                {
                    var data = await response.Content.ReadAsAsync<ExpandoObject>();
                    return Json(data);
                }

            }

data如下所示:

在此處輸入圖片說明

是否可以獲取ProductIDPrice的值。 我想將它們分配給以下內容:

int productId = ...
int price = ...

我如何使用C#做到這一點?

看看Newtonsoft Json nuget包。 基本上,您使用所需的變量創建模型,然后從Newtonsoft調用deserialize方法。 這是一些偽代碼

public class MyObject
{ 
    int ProductID { get; set; }
    int Price { get; set; }
    int Systems { get; set; }    
}

然后在你的方法中:

using Newtonsoft.Json;

public class MyMethod(string json)
{
     MyObject obj = JsonConvert.DeserializeObject<MyObject>(json);
}

這樣的事情。

我很抱歉回答我自己的問題,但我剛剛找到解決方案,我想發布在這里:您需要在data后添加這些代碼行

var _dataResponse = JToken.Parse(JsonConvert.SerializeObject(data));
var _dataResponseProductID = _dataResponse["ProductID"];
var _dataResponsePrice = _dataResponse["Price"];

之后,可以將所采用的值轉換為所需的data types.

.Net 4.0支持直接從json創建動態對象:

JavaScriptSerializer serializer = new JavaScriptSerializer(); 
dynamic item = serializer.Deserialize<object>("{ \"productId\":\"124889\" }");
string test= item["productId"];

如果您使用Json.NETNewtonsoft.Json.Linq - 這個答案可以幫助您。

Json.Net

dynamic stuff = JsonConvert.DeserializeObject("{ 'Name': 'Jon Smith', 'Address': { 'City': 'New York', 'State': 'NY' }, 'Age': 42 }");

string name = stuff.Name;
string address = stuff.Address.City;

Newtonsoft.Json.Linq

dynamic stuff = JObject.Parse("{ 'Name': 'Jon Smith', 'Address': { 'City': 'New York', 'State': 'NY' }, 'Age': 42 }");

string name = stuff.Name;
string address = stuff.Address.City;

string name = stuff.Name;
string address = stuff.Address.City;
var _dataResponse = JToken.Parse(JsonConvert.SerializeObject(data));

var _dataResponseID = _dataResponse["ID"]; var _dataResponseOthers = _dataResponse["others"];

在這里,我想要單獨的 ID,其他人的其他詳細信息我不應該得到 id。 怎么做

暫無
暫無

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

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