【问题标题】:Xamarin PCL C# - Deserialize string to a JSONObject/JSONArrayXamarin PCL C# - 将字符串反序列化为 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# 中执行此操作?

感谢您的帮助和阅读!

【问题讨论】:

    标签: c# json xamarin portable-class-library


    【解决方案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 对象?你明白我的意思吗?
    猜你喜欢
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    • 2021-01-08
    相关资源
    最近更新 更多