C# - 从JSON响应中获取值并将它们分配给变量

时间:2016-07-27 11:18:23

标签: c# json

我编写了这些代码行,这些代码行发出了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如下所示:

enter image description here

是否可以获得ProductIDPrice的值。我想将它们分配给:

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

如何使用C#

执行此操作

4 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

查看Newtonsoft Json nuget包。基本上,您使用所需的变量创建模型,然后从Newtonsoft调用deserialize方法。这是一些伪代码

&#xA;&#xA;
 公共类MyObject&#xA; {&#xA; int ProductID {get;组; }&#XA; int Price {get;组; }&#XA; int Systems {get;组; }&#xA;}&#xA;  
&#xA;&#xA;

然后在您的方法中:

&#xA;&#xA;
 < code> using Newtonsoft.Json;&#xA;&#xA; public class MyMethod(string json)&#xA; {&#xA; MyObject obj = JsonConvert.DeserializeObject&lt; MyObject&gt;(json);&#xA;}&#xA;  
&#xA;&#xA;

类似的东西。

& #xA;

答案 2 :(得分:2)

我很抱歉回答我自己的问题,但我刚刚找到了解决方案,我想发布在这里: 您需要在data

之后添加这些代码行
var _dataResponse = JToken.Parse(JsonConvert.SerializeObject(data));
var _dataResponseProductID = _dataResponse["ProductID"];
var _dataResponsePrice = _dataResponse["Price"];

之后,所采用的值可以转换为所需的data types.

答案 3 :(得分:1)

.Net 4.0支持直接从json创建动态对象:

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

如果您使用Json.NETNewtonsoft.Json.Linq - 此answer可以为您提供帮助。

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;