我试图使用C#从rest api json响应中提取一个值。
我有以下代码:
client.BaseUrl = "https://api.cloud.appcelerator.com";
request.Resource = "/v1/chats/create.json?key=" + cac.AppCode.ToString();
request.Method = Method.POST;
request.AddUrlSegment("appkey", "key");
var response = client.Execute(request);
在“回复”消息中,我得到了一个json内容如下:
{
"meta": {
"code": 200,
"status": "ok",
"method_name": "createChatMessage"
},
"response": {
"chats": [
{
"id": "521cfcd840926a0b3500449e",
"created_at": "2013-08-27T19:24:08+0000",
"updated_at": "2013-08-27T19:24:08+0000",
"message": " join to the chat group, welcome …",
"from": {
"id": "520f41e125e74b0b2400130a",
"first_name": "Administrator",
"created_at": "2013-08-17T09:26:57+0000",
"updated_at": "2013-08-27T19:23:10+0000",
"external_accounts": [
],
"email": "roy@tomax.co.il",
"confirmed_at": "2013-08-17T09:26:57+0000",
"username": "admin",
"admin": "true",
"stats": {
"photos": {
"total_count": 0
},
"storage": {
"used": 0
}
}
},
"chat_group": {
"id": "521cfcd840926a0b3500449d",
"created_at": "2013-08-27T19:24:08+0000",
"updated_at": "2013-08-27T19:24:08+0000",
"message": " join to the chat group, welcome …",
"participate_users": [
{
"id": "520f41e125e74b0b2400130a",
"first_name": "Administrator",
"created_at": "2013-08-17T09:26:57+0000",
"updated_at": "2013-08-27T19:23:10+0000",
"external_accounts": [
],
"email": "roy@tomax.co.il",
"confirmed_at": "2013-08-17T09:26:57+0000",
"username": "admin",
"admin": "true",
"stats": {
"photos": {
"total_count": 0
},
"storage": {
"used": 0
}
}
}
]
}
}
]
}
}
如何从返回的json响应结果消息中提取以下嵌套值“id”:“521cfcd840926a0b3500449e”?
我正在使用C#。
答案 0 :(得分:38)
1>添加此namspace。 使用Newtonsoft.Json.Linq;
2 - ;使用此源代码。
JObject joResponse = JObject.Parse(response);
JObject ojObject = (JObject)joResponse["response"];
JArray array= (JArray)ojObject ["chats"];
int id = Convert.ToInt32(array[0].toString());
答案 1 :(得分:20)
第1步:一个很棒的工具 - http://json2csharp.com/ - 由它生成的结果在
之下第2步:JToken.Parse(...).ToObject<RootObject>()
。
public class Meta
{
public int code { get; set; }
public string status { get; set; }
public string method_name { get; set; }
}
public class Photos
{
public int total_count { get; set; }
}
public class Storage
{
public int used { get; set; }
}
public class Stats
{
public Photos photos { get; set; }
public Storage storage { get; set; }
}
public class From
{
public string id { get; set; }
public string first_name { get; set; }
public string created_at { get; set; }
public string updated_at { get; set; }
public List<object> external_accounts { get; set; }
public string email { get; set; }
public string confirmed_at { get; set; }
public string username { get; set; }
public string admin { get; set; }
public Stats stats { get; set; }
}
public class ParticipateUser
{
public string id { get; set; }
public string first_name { get; set; }
public string created_at { get; set; }
public string updated_at { get; set; }
public List<object> external_accounts { get; set; }
public string email { get; set; }
public string confirmed_at { get; set; }
public string username { get; set; }
public string admin { get; set; }
public Stats stats { get; set; }
}
public class ChatGroup
{
public string id { get; set; }
public string created_at { get; set; }
public string updated_at { get; set; }
public string message { get; set; }
public List<ParticipateUser> participate_users { get; set; }
}
public class Chat
{
public string id { get; set; }
public string created_at { get; set; }
public string updated_at { get; set; }
public string message { get; set; }
public From from { get; set; }
public ChatGroup chat_group { get; set; }
}
public class Response
{
public List<Chat> chats { get; set; }
}
public class RootObject
{
public Meta meta { get; set; }
public Response response { get; set; }
}
答案 2 :(得分:1)
创建一个映射到Json的C#类,并使用Newsoft JsonConvert
对其进行反序列化。
例如:
public Class MyResponse
{
public Meta Meta { get; set; }
public Response Response { get; set; }
}