2017-02-23 106 views
0

Я работаю над побочным проектом на работе (я не разработчик).Анализ и проверка строки JSON в C#

Что я пытаюсь достичь, является проверка того, является ли statusNULL или он имеет ERR в ответе на запрос входа, чтобы я мог знать, могу ли я продолжить процесс.

Это код, который я до сих пор:

namespace EseyeSIMAPI 
{ 
class Program 
{ 
    static void Main(string[] args) 
    { 
     var client = new RestClient("https://siam.eseye.com/Japi/Tigrillo"); 
     var loginRequest = new RestRequest("/login/", Method.POST); 

     loginRequest.AddHeader("postman-token", "4e67ed4c-4130-4067-9539-d5ed6b6ad761"); 
     loginRequest.AddHeader("cache-control", "no-cache"); 
     loginRequest.AddHeader("content-type", "application/json"); 
     loginRequest.AddParameter("application/json", "{\r\n\"username\" : \"someusername\" ,\r\n\"password\" : \"somepassword\" ,\r\n\"portfolioID\" : \"someportfolioid\"\r\n}", ParameterType.RequestBody); 

     IRestResponse response = client.Execute(loginRequest); 

     client.ExecuteAsync(loginRequest, x => 
     { 
      var json = x.Content; 
     }); 

     Console.ReadLine(); 
    } 
} 
public class LoginStatus 
{ 
    public Status status { get; set; } 
    public string cookie { get; set; } 
    public string permissions { get; set; } 
    public string canActivate { get; set; } 
} 

public class Status 
{ 
    public string errorCode { get; set; } 
    public string errorMessage { get; set; } 
    public string status { get; set; } 
} 
} 

Я получаю JSON ответ:

{ 
"status": { 
"errorCode": "", 
"errorMessage": "", 
"status": "OK" 
}, 
"cookie": "2p255ju6q1lfql594uppnq9lp2", 
"permissions": "ULE", 
"canActivate": "yes" 
} 

Так я создал класс, который будет обрабатывать все параметры отклика в объекте JSON , Я просто не знаю, как именно получить доступ к status.

+0

Так что вы хотите десериализация '' x.Conent' к LoginStatus' является то, что правильно ? – musefan

+0

Если да, то [этот вопрос] (http://stackoverflow.com/questions/4611031/convert-json-string-to-c-sharp-object) кажется подходящим ответом – musefan

+0

@musefan yep. Я хочу иметь доступ к каждой паре ключей и значений. –

ответ

2

Исходя из моих комментариев, это то, как вы бы конкретно сделать это с вашим кодом с помощью JavaScriptSerializer class:

client.ExecuteAsync(loginRequest, x => 
{ 
    var json = x.Content; 

    JavaScriptSerializer jsonSerializer = new JavaScriptSerializer(); 
    LoginStatus loginStatus = jsonSerializer.Deserialize<LoginStatus>(json); 

    string errorCode = loginStatus.status.errorCode; 
}); 
+0

Я получаю следующую ошибку: Невозможно передать объект типа «System.Collections.Generic.Dictionary'2 [System.String, System.Object]», чтобы ввести «EseyeSIMAPI». LoginStatus. –

+0

@ KobbiGal: Извините, у меня нет возможности проверить в любой момент. Можете ли вы попробовать мой обновленный ответ? – musefan

+0

Ошибка \t CS0308 \t Необработанный метод 'JavaScriptSerializer.DeserializeObject (string)' не может использоваться с аргументами типа –

Смежные вопросы