سؤال

ولقد حصلت على JSON يعود مثل هذا:

{"responseData": [{"responseData":{"translatedText":"elefante"},"responseDetails":null,"responseStatus":200},{"responseData":{"translatedText":"Burro"},"responseDetails":null,"responseStatus":200}], "responseDetails": null, "responseStatus": 200}

وأنا في حاجة إلى تحليل ذلك إلى كائن ResponseData لقد انشاء:

    public class ResponseData
    {
        public string translatedText = string.Empty;

        public object responseDetails = null;

        public HttpStatusCode responseStatus = HttpStatusCode.OK;
        public List<ResponseData> responseData { get; set; }
    }

وأنا إلغاء تسلسل مثل هذا:

JavaScriptSerializer serializer = new JavaScriptSerializer();
ResponseData translation = 
                    serializer.Deserialize<ResponseData>(responseJson);

ولكن بغض النظر عن ما هو النص المترجم دائما فارغة.

هل كانت مفيدة؟

المحلول

ويجب أن نفكر في الرسم البياني كائن JSON ممثلة في هذه السلسلة.

ويمكنك أنواع عش للكائنات deserializating مع مختلف خصائص / مجالات استخدام الأدوية مثل ذلك:

 class Response<T>
 {
    public ResponseData<T>[] responseData = new ResponseData<T>[0];
    public HttpStatusCode responseStatus;
    public object responseDetails;
 }

 public class ResponseData<TInternal> {
    public TInternal responseData;
    public HttpStatusCode responseStatus;
    public object responseDetails;
 }

 public class TranslatedText
 {
    public string translatedText;
 }

 [Test]
 public void Sample()
 {
    var input = @"
       { 
       ""responseData"": [{""responseData"": {""translatedText"" : ""elefante"" },          ""responseDetails"":null, ""responseStatus"":200} , {""responseData"": {           ""translatedText"":""Burro"" }, ""responseDetails"":null, ""responseStatus"":200}], 
         ""responseDetails"" : null, ""responseStatus"": 200}
        ";

     var json = new JavaScriptSerializer();
     var response = json.Deserialize<Response<TranslatedText>>(input);
     Assert.AreEqual(response.responseData[0].responseData.translatedText,"elefante");
     Assert.AreEqual(response.responseStatus,HttpStatusCode.OK);

و}

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top