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的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Xamarin 表格 pcl 的网格中插入背景图像

将 JSON 字符串反序列化为多个 C# 对象

反序列化 JSON 并返回 C# 中的值?

c# 多个json字符串反序列化

无法将 JSON 字符串反序列化为 C# 对象

无法反序列化当前 JSON 对象 xamarin.forms