【问题标题】:How to deserialize this Json in .net core?如何在.net核心中反序列化这个Json?
【发布时间】:2020-08-31 11:39:54
【问题描述】:

您好,我有这个 Json,但我无法反序列化它:

    "Places":
"[{\"address\":\"Brussels, Belgium\",\"lat\":50.8503396,\"lng\":4.3517103},{\"address\":\"Amsterdam, Netherlands\",\"lat\":52.3675734,\"lng\":4.9041389}]"

我尝试将它们添加到集合中,但出现此错误

"Error converting value \"[{\"address\":\"Brussels, Belgium\",\"lat\":50.8503396,\"lng\":4.3517103},{\"address\":\"Amsterdam, Netherlands\",\"lat\":52.3675734,\"lng\":4.9041389}]\" to type 'System.Collections.Generic.List`1[MyMobiz.Models.Placess]'. Path 'Places', line 2, position 154."

【问题讨论】:

  • 您需要共享正确的 json 和您尝试反序列化的类以及执行反序列化的代码。
  • 这不是合法的 JSON。属性必须在对象内部,您缺少围绕该 JSON 片段的 {...}。如果这是您要反序列化的整个内容,则应首先将其包装在{...}中,否则它不是合法有效的JSON。
  • 我有一个动态类型来存储这个 json。我可以访问 json.Places 来打印它们,但是当我尝试 json.Places[0] 它给我错误
  • 其次,你有一个属性将字符串"Places" 映射到另一个字符串,其中包含似乎更多的JSON。您需要首先将其反序列化为具有字符串属性的对象,然后该对象将包含嵌入的 JSON,然后您需要将此字符串反序列化为其他一些类,本质上是进行双重反序列化。
  • json.Places反序列化为另一组对象。

标签: c# json .net-core json.net


【解决方案1】:

您的 json 显示键和值都是字符串。您需要再次反序列化您的值以将其转换为列表。

var obj = JObject.Parse(json);
var places = JsonConvert.DeserializeObject<List<Places>>(obj[nameof(Places)].ToString());

【讨论】:

    猜你喜欢
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    • 2012-10-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多