【问题标题】:How to convert a string to an object in C# .NET Core? [closed]如何在 C# .NET Core 中将字符串转换为对象? [关闭]
【发布时间】:2021-09-02 11:15:45
【问题描述】:

我想使用System.Text.Json 而不是Newtonsoft.Json。但是,我无法将字符串转换为对象。

这是我的要求:

{"Abc":'{"Property1":"abds","property2":"232"}'}

我尝试通过JsonSerializer.Deserialize<A>(request) 解析此字符串,但出现错误。

请告诉我如何将这个字符串解析成一个对象?

提前致谢!

【问题讨论】:

  • 你写了什么代码,遇到了什么错误?
  • 请向我们展示您的代码以及您做了什么。如果没有这些详细信息,我们将无法为您提供进一步的帮助,您的问题可能会被其他人关闭。
  • 您应该更深入地解释您的问题并使用更多代码,这样社区才能为您提供更好的答案。
  • 您的 JSON 格式错误。上传到jsonlint.com 会报错。问题是"Abc" 的值'{"Property1":"abds","property2":"232"}' 用单引号括起来,并且根据JSON Standard,单引号不是有效的字符串分隔符。 Json.NET 是宽容的,并且无论如何都会解析它们,但 System.Text.Json 没有。见System.Text.Json disallows string literals surrounded by single quotes #31608

标签: c# .net-5 system.text.json


【解决方案1】:

首先你的json字符串因为单引号无效,去掉单引号,创建类如下

    public class Abc
    {
        public string Property1 { get; set; }
        public string property2 { get; set; }
    }

    public class Root
    {
        public Abc Abc { get; set; }
    }

然后像这样反序列化:JsonSerializer.Deserialize<Root>(jsonString);

【讨论】:

  • 整个对象是无效的JSON吗?或者整个对象是一个普通的 JavaScript 对象,它包含一个名为 Abc 的属性,其 value 是一个完全有效的 JSON 字符串?这个问题不清楚。
  • 如果你解析 json 你会得到SyntaxError: Unexpected token ' in JSON at position 7
猜你喜欢
  • 1970-01-01
  • 2011-09-06
  • 1970-01-01
  • 1970-01-01
  • 2016-07-30
  • 1970-01-01
  • 2011-07-21
  • 2018-05-09
  • 1970-01-01
相关资源
最近更新 更多