Xamarin PCL C# - 将字符串反序列化为 JSONObject/JSONArray
Xamarin PCL C# - Deserialize string to a JSONObject/JSONArray
我使用 Android 进行了很多工作,但今天我必须使用 Xamarin。
我正在制作一个 PCL class 并且我正在尝试从字符串(HttpWebResponse
转换为字符串)创建一个 JSON 对象以从 Android包装器。
经过一些研究,我找不到任何能真正回答我问题的东西。
最终我希望能够像这样调用:
string value = jsonObject.get("key").getAsString();
我从 http 响应中得到一个字符串,然后我想将它转换成一个 JSON 对象。创建 JSON 对象后,我想像示例中那样提取一个值。但是,我在 PCL 中制作它,所以是否可以在 Xamarin/C# 中从 PCL 中制作它?
感谢阅读和帮助!
您可以使用 Newtonsoft.Json 库将字符串反序列化为对象:
Account account = JsonConvert.DeserializeObject<Account>(jsonFromServer);
您还可以使用 HttpClient
class 而不是 HttpWebRequest
并自动将响应反序列化到您的对象中:
var client = new HttpClient();
var response = await client.GetAsync("/accounts");
Account account = await response.Content.ReadAsAsync<Account>();
如果您在发生错误时服务器 returns 不同的 StatusCode,您可以使用 HttpResponseMessage.IsSuccessStatusCode
来决定将响应反序列化为哪种类型。如果不是,您可以使用 var jsonObject = JObject.Parse(jsonText);
并像这样访问属性:jsonObject["someKey"]
您需要 Microsoft.AspNet.WebApi.Client 来自 Nuget 的库
我使用 Android 进行了很多工作,但今天我必须使用 Xamarin。
我正在制作一个 PCL class 并且我正在尝试从字符串(HttpWebResponse
转换为字符串)创建一个 JSON 对象以从 Android包装器。
经过一些研究,我找不到任何能真正回答我问题的东西。
最终我希望能够像这样调用:
string value = jsonObject.get("key").getAsString();
我从 http 响应中得到一个字符串,然后我想将它转换成一个 JSON 对象。创建 JSON 对象后,我想像示例中那样提取一个值。但是,我在 PCL 中制作它,所以是否可以在 Xamarin/C# 中从 PCL 中制作它?
感谢阅读和帮助!
您可以使用 Newtonsoft.Json 库将字符串反序列化为对象:
Account account = JsonConvert.DeserializeObject<Account>(jsonFromServer);
您还可以使用 HttpClient
class 而不是 HttpWebRequest
并自动将响应反序列化到您的对象中:
var client = new HttpClient();
var response = await client.GetAsync("/accounts");
Account account = await response.Content.ReadAsAsync<Account>();
如果您在发生错误时服务器 returns 不同的 StatusCode,您可以使用 HttpResponseMessage.IsSuccessStatusCode
来决定将响应反序列化为哪种类型。如果不是,您可以使用 var jsonObject = JObject.Parse(jsonText);
并像这样访问属性:jsonObject["someKey"]
您需要 Microsoft.AspNet.WebApi.Client 来自 Nuget 的库