反序列化 jSON Google AJAX Translation API
本文关键字:Translation API AJAX Google jSON 反序列化 | 更新日期: 2023-09-27 17:47:21
我让JSON像这样返回:
{
"responseData": [{
"responseData": {
"translatedText": "elefante"
},
"responseDetails": null,
"responseStatus": 200
}, {
"responseData": {
"translatedText": "Burro"
},
"responseDetails": null,
"responseStatus": 200
}],
"responseDetails": null,
"responseStatus": 200
}
我需要将其解析为我设置的响应数据对象:
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对象图。
您可以使用泛型嵌套类型以反序列化具有不同属性/字段的对象,如下所示:
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);
}