【问题标题】:Decode JSON string in C#在 C# 中解码 JSON 字符串
【发布时间】:2017-12-21 07:00:07
【问题描述】:

我正在尝试在 xamarin 跨平台应用程序中解码以下字符串

{"body":"test","time":"2017-12-20 14:09:16","type":0}

除了我找不到有效的教程...

我尝试使用 NewtonSoft.Json 但下载失败并提示

安装失败。滚回来... 项目“SocialNetwork.iOS”中不存在包“Microsoft.CSharp.4.3.0” 从文件夹“C:\Users\snip\source\repos\SocialMedia\packages”中删除包“Microsoft.CSharp.4.3.0” 从文件夹“C:\Users\snip\source\repos\SocialMedia\packages”中删除了包“Microsoft.CSharp.4.3.0” 执行 nuget 操作耗时 2.86 秒 未能添加参考。包“Microsoft.CSharp”试图添加对 GAC 中未找到的“Microsoft.CSharp”的框架引用。这可能是包中的错误。请联系包所有者寻求帮助。 参考不可用。 经过时间:00:00:21.6604873

【问题讨论】:

  • 你能贴出你用来解码的代码sn-p吗?
  • DotNet 框架版本?点网核心?你如何安装包?在 Windows 或 Linux 中? NuGet.exedotnet restore?
  • 给我们更多细节,如上所述

标签: c# json xamarin


【解决方案1】:

您也可以使用 JavaScriptSerializer (System.Web.Extensions.dll)。

你可以使用这个类:

    public class Response
{
    public string body { get; set; }
    public string time { get; set; }
    public int type { get; set; }
}

这里有一个如何使用它的示例。

    public void Method(string json)
{
    JavaScriptSerializer js = new JavaScriptSerializer();

    Response response = js.Deserialize<Response>(json); 
}

【讨论】:

【解决方案2】:

我不是很了解,但我可以给出一个想法。首先我认为,你必须从你的项目中卸载 Newtonsoft.Json 包并安装另一个版本。

  1. 右键单击您的项目并转到管理 NuGet 包
  2. 点击卸载 NewtonSoft.Json 包。
  3. 现在,为 Newtonsoft.Json 选择另一个版本。(例如版本 6.0.4)
  4. 选择6.0.4版本并安装。
  5. 转到您项目的 packages.config。
  6. 检查 Newtonsoft.Json 的版本。

现在我们必须使用 Newtonsoft.Json 将字符串转换为 Json

string str = "yourString";               

JObject JsonResult = JObject.Parse(str);
string body = JsonResult["body"].Value<string>();
int type = JsonResult["type"].Value<int>();

如果你不能这样做。检查此链接。也许这会帮助你: https://stackoverflow.com/a/22870885/4289550

【讨论】:

  • 它现在安装得很好,除了运行时我得到“Newtonsoft.Json.JsonReaderException:从 JsonReader 读取 JObject 时出错。路径'',第 0 行,位置 0。”关于“JObject JsonResult = JObject.Parse(line)”
  • 嗯,也许你的字符串变量不适合创建 Json 对象?您应该重新创建字符串变量。
  • 我将如何重新创建它?
  • 您必须在字符串变量的 ' " ' 字符左侧添加 '\' 字符。例如:string myStringVariable = "{\"body\":\"test\",\"时间\":\"2017-12-20 14:09:16\",\"类型\":0}";
  • 我实际上并没有这样声明它,我从 URL 中获取它,这就是字符串值,我没有手动输入它。
猜你喜欢
  • 1970-01-01
  • 2022-10-15
  • 2013-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-18
相关资源
最近更新 更多