2017-02-23 56 views
0

我正在工作的一個側面項目(我不是開發人員)。在C中解析和驗證JSON字符串#

我想要實現的是驗證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是。我希望能夠訪問每個鍵值對。 –

回答

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)'不能與類型參數一起使用 –