我编写了这些代码行,这些代码行发出了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
如下所示:
是否可以获得ProductID
和Price
的值。我想将它们分配给:
int productId = ...
int price = ...
如何使用C#
?
答案 0 :(得分:2)
创建一个对象并反序列化json对象。
http://www.newtonsoft.com/json/help/html/t_newtonsoft_json_jsonconvert.htm
答案 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.NET
或Newtonsoft.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;