Xamarin PCL C# - 将字符串反序列化为 JSONObject/JSONArray
Posted
技术标签:
【中文标题】Xamarin PCL C# - 将字符串反序列化为 JSONObject/JSONArray【英文标题】:Xamarin PCL C# - Deserialize string to a JSONObject/JSONArray 【发布时间】:2016-08-04 22:42:51 【问题描述】:我在 android 上做了很多工作,但今天我必须使用 Xamarin。
我正在创建一个 PCL 类,我正在尝试从一个字符串(HttpWebResponse
转换为字符串)创建一个 JSON 对象,以便从 Android 包装器调用。
经过一些研究,我找不到任何能真正回答我问题的东西。
最终我希望能够像这样调用:
string value = jsonObject.get("key").getAsString();
我从 http 响应中得到一个字符串,然后我想将其转换为 JSON 对象。创建 JSON 对象后,我想提取示例中的值。但是,我是在 PCL 中制作的,那么是否可以在 PCL 中的 Xamarin/C# 中执行此操作?
感谢您的帮助和阅读!
【问题讨论】:
【参考方案1】:您可以使用Newtonsoft.Json 库将字符串反序列化为对象:
Account account = JsonConvert.DeserializeObject<Account>(jsonFromServer);
您还可以使用HttpClient
类代替HttpWebRequest
并自动将响应反序列化到您的对象中:
var client = new HttpClient();
var response = await client.GetAsync("/accounts");
Account account = await response.Content.ReadAsAsync<Account>();
如果您的服务器在发生错误时返回不同的 StatusCode,您可以使用HttpResponseMessage.IsSuccessStatusCode
来决定将响应反序列化为哪种类型。如果没有,您可以使用 var jsonObject = JObject.Parse(jsonText);
并访问如下属性:jsonObject["someKey"]
你需要来自 Nuget 的 Microsoft.AspNet.WebApi.Client 库
【讨论】:
感谢您的快速答复!我已经看到我可以像你一样做到这一点,所以也许我不明白一些事情。我们可以,有时我可以得到一个错误响应,然后,它与 Account 不是同一个对象(如果我以你的代码为例)。所以它既可以是 Account 对象,也可以是 Error 对象?你明白我的意思吗?以上是关于Xamarin PCL C# - 将字符串反序列化为 JSONObject/JSONArray的主要内容,如果未能解决你的问题,请参考以下文章