【问题标题】:Deserializing Json string c# [closed]反序列化Json字符串c#[关闭]
【发布时间】:2022-10-23 19:05:56
【问题描述】:

我正在尝试将以下 json 反序列化为 C# 对象?我需要读取密度和坐标。

{{
  "geometry": {
    "type": "Point",
    "coordinates": [
      51.5570726284386,
      25.39156280708102
    ]
  },
  "density": 1
}}

谢谢。

【问题讨论】:

  • 它看起来不像一个有效的 JSON。至于在 C# 中一般反序列化 JSON - 网上有很多这样的例子,请先尝试一下。
  • 如果您使用的是 Visual Studio,请单击“编辑”>“选择性粘贴”>“将 Json 粘贴为类”。然后你将拥有你的对象的类。将您的对象反序列化到类中

标签: c# json


【解决方案1】:

您的 json 无效。但是如果你在一个字符串的开头和结尾移除一个额外的小括号

    json = json.Substring(1,json.Length-2);

然后你可以解析它

    using Newtonsoft.Json;

    var jsonObject = JObject.Parse(json);

    int density = (int)jsonObject["density"];
    double[] coordinates = jsonObject["geometry"]["coordinates"].ToObject<double[]>();

【讨论】:

  • 谢谢。我删除了额外的支架,它可以工作。
【解决方案2】:

使用Parse(...)

dynamic d = JObject.Parse(json);
var density = d["density"];

【讨论】:

  • 使用dynamic 是一种非常糟糕的做法。理想情况下,您希望使用 JsonConvert.DeserializeObject 将 JSON 转换为对象,但如果不能,最好将类型保留为 JObject,因为它具有相同的功能并且不那么模糊。
猜你喜欢
  • 1970-01-01
  • 2021-12-27
  • 2021-09-02
  • 1970-01-01
  • 1970-01-01
  • 2011-10-06
  • 2021-02-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多