2017-11-03 15 views
0

コンテンツから特定の値を取得しようとしていますが、どうすればいいのかわかりません。Restsharpがコンテンツから特定のJSON値を取得する

RestSharp(C#)を使用してJSONコードを実行していますが、コマンドを実行するとエラーが返されます。私は、プロパティerrorMessageから値を取得する必要があります。

var json = JsonConvert.SerializeObject(objectToUpdate); 
var request = new RestRequest(Method.POST); 

request.RequestFormat = DataFormat.Json; 
request.AddCookie("authToken", token); 
request.AddParameter("application/json", json, ParameterType.RequestBody); 

var response = client.Execute<T>(request); 

After execute this code my response return the below JSON: 

{ 
    "response":{}, 
    "status":{ 
     "success":false, 
     "detail":{ 
      "errormessage":[{ 
       "fieldName":"departmentCode", 
       "errorMessage":"Department code provided is already associated with another department", 
       "errorCode":"DUPLICATE_DEPARTMENT_CODE" 
      }], 
      "error":"Validation failure on request", 
      "operation":"internal", 
      "errorcode":"412" 
     } 
    } 
} 
+0

try "request.Parameters.Clear();" before "request.AddCookie(" authToken "、token);" –

+0

はhttps://stackoverflow.com/questions/11400879/how-to-post-request-using-restsharpを見ているかもしれません。あなたのメッセージがバリデーションに失敗したことを示すエラーメッセージ - departmentCodeにコンテンツの問題があります – Vladimir

+0

こんにちは@DarkoMaricProgramer、私はパラメータに問題はありません、私は** errorMessage **から情報を取得する必要がありますログ。 –

答えて

0

あなたが期待する応答を表すクラス、持つことができる:次にあなたがRestSharpクライアントから解析された応答を得ることができる、ということ持って

class ApiResponse{ 
    // use a class that represents normal response instead of object 
    // if you need to interact with it. 
    public object Response {get; set;} 
    public ResponseStatus Status{get; set;} 
} 
class ResponseStatus { 
    public StatusDetail Detail{get; set;} 
    public bool Success {get; set;} 
} 
class StatusDetail { 
    public ErrorMessage[] ErrorMessage{get; set;} 
} 
class ErrorMessage{ 
    public string FieldName{get; set;} 
    public string ErrorMessage{get; set;} 
    public string ErrorCode{get; set;} 
} 

を:

var response = client.Execute<ApiResponse>(request); 
var message = response.Data.Response.Detail.ErrorMessage.First().ErrorMessage; 

によると、 RestSharpのドキュメントでは、動的オブジェクトよりも応答クラスを使用しています(https://github.com/restsharp/RestSharp/wiki/Recommended-Usage)。

+0

ありがとう皆さん。 私はJustinasが言った、そしてPUFFFの例を使用しました。私はクラスの構造を構築し、コードは働きました.... ApiResponse apiResponse = new ApiResponse(); apiResponse.Response = JsonConvert.DeserializeObject (JObject.Parse(response.Content)["status"]。ToString()); –

関連する問題