C#从返回的json对象中获取一个值

时间:2017-08-02 03:52:54

标签: c# asp.net json object nopcommerce

所以我试图检查从api调用活动广告系列返回给我的值。 因为我正在学习C#,我不知道如何解决这个问题。

因此,我使用此代码发送api调用并将响应存储在变量中:

var contactExists = acs.SendRequest("POST", getParameters1, postParameters1);

然后我使用以下方法将响应输出到visual studio中的输出wibndow:

System.Diagnostics.Debug.WriteLine(contactExists);

这会返回:

{"result_code":1,"result_message":"Success: Something is returned","result_output":"json"}

现在在C#中,我如何检查此"result_code":1

的值

我遇到this anwswer并检查了msdn,但这没有意义。

我也认为也许contactExists.result_code会起作用,但事实并非如此。

任何人都知道怎么做。 干杯

3 个答案:

答案 0 :(得分:1)

我建议您使用Json.NET

var jsonResult = acs.SendRequest("POST", getParameters1, postParameters1);
dynamic contactExists = JsonConvert.DeserializeObject(jsonResult);

所以你可以像这样轻松使用:

int result_code = contactExists.result_code;
string result_message = contactExists.result_message;

我希望对你有所帮助:)。

答案 1 :(得分:1)

您还可以使用以下代码。在这里你可以通过使用JSON.Net的JObject类来实现这一点。

var jsonResult = acs.SendRequest("POST", getParameters1, postParameters1);

JObject contactExists = JsonConvert.DeserializeObject(jsonResult);

现在要从上面的json对象访问属性,你可以这样使用: -

 int result_code = Convert.ToInt32(contactExists["result_code"]);

答案 2 :(得分:0)

创建适当的通用类

public class Response<T>
{
    public int result_code { get; set; }
    public string result_message { get; set; }
    public T result_output { get; set; }
}

最后使用JSON反序列化

var jsonResult = acs.SendRequest("POST", getParameters1, postParameters1);

var result = JsonConvert.DeserializeObject<Response<string>>(jsonResult);