Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Parsing Json rest api response in C# [duplicate]

I am trying to pull a value from a rest api json response using C#.

I have the following code:

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); 

In the "response" message I got a json content as follows:

{   "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": "[email protected]",           "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": "[email protected]",               "confirmed_at": "2013-08-17T09:26:57+0000",               "username": "admin",               "admin": "true",               "stats": {                 "photos": {                   "total_count": 0                 },                 "storage": {                   "used": 0                 }               }             }           ]         }       }     ]   } } 

How do I pull the following nested value of "id": "521cfcd840926a0b3500449e" from the returned json response result message?

I am using C#.

like image 298
Chehmer Avatar asked Aug 28 '13 14:08

Chehmer


People also ask

What is JObject parse in C#?

JObject class has parse method; it parses the JSON string and converts it into a Key-value dictionary object. In the following example, I have used “JObject. Parse” method and retrieved data using key. string jsonData = @"{ 'FirstName':'Jignesh', 'LastName':'Trivedi' }"; var details = JObject.


2 Answers

1> Add this namspace. using Newtonsoft.Json.Linq;

2> use this source code.

JObject joResponse = JObject.Parse(response);                    JObject ojObject = (JObject)joResponse["response"]; JArray array= (JArray)ojObject ["chats"]; int id = Convert.ToInt32(array[0].toString()); 
like image 192
Ravsaheb Avatar answered Sep 28 '22 08:09

Ravsaheb


  1. Create classes that match your data,
  2. then use JSON.NET to convert the JSON data to regular C# objects.

Step 1: a great tool - http://json2csharp.com/ - the results generated by it are below

Step 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; } } 
like image 25
Timothy Shields Avatar answered Sep 28 '22 06:09

Timothy Shields