إلغاء تسلسل JSON جوجل أجاكس API الترجمة
-
05-07-2019 - |
سؤال
ولقد حصلت على 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);
و}
لا تنتمي إلى StackOverflow