问题标签 [system.text.json]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
23312 浏览

c# - 如何为 System.Text.Json.JsonSerializer 全局设置默认选项?

而不是这个:

我想做这样的事情:

希望不必JsonSerializerOptions为我们最常见的情况传递一个实例,并为异常而不是规则覆盖。

如本问答所述,这是 Json.Net 的一个有用功能。我查看了.NET Core的文档以及这个 GitHub 存储库。这个System.Text.Json

在 .NET Core 3 中似乎没有用于管理 JSON 序列化默认值的类比。还是我忽略了它?


0 投票
0 回答
111 浏览

c# - JsonDocument 可以用作 ContractResolver 吗?

我对新发布的 .NET Core 3.0 及其新版本有疑问System.Text.Json,我想问一下新版本JsonDocument是否可以ContractResolver与 Newtonsoft JSON.NET 中的类类似地使用。

我需要的很简单,假设一个类有两个属性

我需要将两个不同的 JSON 反序列化到这个类中。

JSON 1:

JSON 2:

我需要反序列full-name化属性fullnameasName和as address-street。不需要其他 JSON 字段。streetStreet

为了反序列化具有不同属性名称的多个 JSON,我ContractResolver在 JSON.NET 中使用了一个,它工作得很好。

我正在研究的原因JsonDocument是我只反序列化了几个 JSON 属性,并且使用当前的方法我必须缓存整个 JSON。如果我理解正确,JsonDocument应该允许我只访问我需要的属性。

谢谢!

编辑

为了澄清我在这里要问的问题 - 想法是获取有关 Json 对象的信息但不完全加载它,因为它不需要,这就是为什么我想使用新的 JsonDocument,只选择那些我需要并加载这些。由于 Json 属性名称与我的类属性不同,并且我有多个 Json 试图反序列化到同一个类中,因此我需要 IContractResolver 之类的东西来将类属性与 Json 中的名称匹配。

我能够做出这样的事情,但我承认它不是很漂亮。


private readonly Dictionary propertyMappings = new Dictionary();

0 投票
1 回答
729 浏览

asp.net-core - 如何在 F# Asp Core Wep API 中序列化 F# 可区分联合类型

我正在尝试构建一个 F# Asp.Net Core 3.0 Web API,我在其中发送一些 F# 记录。据我所知,Asp.Net Core 3.0System.Text.Json默认使用将对象序列化为 json。为了使域模型自我记录,我使用了 F# 区分联合类型。

该模型如下所示:

所以我有一种联合类型,只有一种可能性ValueId,我有一种联合类型,有两种可能性StarttimeNotStarted其中Started包含一个DateTime对象。

现在在我的控制器中,我构建了一些示例数据并将其返回。

当我查看返回的数据时,json我得到了单选项联合类型(Guid)的数据,但我从来没有得到多选项联合类型的值。

有谁知道如何发送多值联合类型的值?或者将有区别的联合类型映射到匿名记录通常更好吗?

谢谢!

0 投票
6 回答
4314 浏览

json - 使用 System.Text.Json 序列化实现接口的对象

我有一个包含通用集合的大师班。集合中的元素具有不同的类型,并且每个都实现一个接口。

硕士课:

元素合同:

元素的两个样本:

我需要MasterClass使用 Json 中的新System.Text.Json库来序列化对象的实例。使用以下代码,

我得到以下 JSON:

代替:

我应该实现哪个类(转换器、编写器、...)以获得完整的 JSON?

在此先感谢您的帮助。

0 投票
1 回答
644 浏览

c# - 写清单使用 System.Text.Json 到没有缩进的 Json 数组

注意:我使用的System.Text.Json不是JSON.NET已经回答了类似的问题。我需要相同的答案,但对于System.Text.Json. 我想将我的课程写成 Json 并确保它是人类可读的。为此,我在选项中将缩进设置为 true。但是,该类包含一个List<double>我不想缩进的属性,因为它使文件很长。

所以我有这个:

我希望它像这样序列化:

不是这个(或类似的东西):

我写了一个JsonConverter来实现这一点:

但是,这会将数组写入我并不真正想要的字符串。最好的方法是什么?

即你得到“[1,2,3]”而不是[1,2,3]

其次,writer传递给Write函数的对象具有Options属性,但不能更改。因此,如果我使用 writer 对象手动写出数组,它会缩进。

0 投票
0 回答
813 浏览

c# - Disable System.Text.Json on Web API on .NET Core 3.0

I would like explicitly use legacy Newtonsoft.Json library for serialization/deserialization on .NET Core Web API 3.0.0. No mater what I do, always System.Text.Json is involved and custom Newtonsoft's converters are not used.

ConfigureServices method in startup.cs looks like this:

In this case I tried with custom CustomGeoJsonConverter and, while serializing, there were no activity in that object. Similar code works OK in .NET Core 2.2.

0 投票
4 回答
1302 浏览

c# - 当特定的类被强制转换为其他东西时,JsonSerializer 的行为不像预期的那样

我试图从 json.net 迁移到微软的 json 并发现一些行为非常不同的东西。

让我们使用这个简化的例子:

Microsoft 的 Serializers 序列化来自 IName 的属性 JSON.NET 序列化来自 Person 的属性

有没有办法配置它,使它像 JSON.NET 一样工作?我可以通过的选项并不表明这是可配置的。我忽略了什么吗?

0 投票
4 回答
9365 浏览

c# - 新的 `System.Text.Json` 是否具有必需的属性属性?

我已经梳理了MS 文档,但找不到与NewtonSoft JsonPropertyRequired等效的属性。

我正在寻找的是这个:

我只是遗漏了什么,还是 Microsoft 库中不存在这种级别的验证?

0 投票
0 回答
4194 浏览

c# - JsonElement 等效于 JObject.ToObject

我正在将核心 2.2 SDK 移植到 3.0。Newtonsoft 已被原生 Json 引擎取代。我的 SDK 采用 JObject 并将其转换为具体类型ToObject<T>()

JsonElement 相当于什么?

我想反序列化一个只能在运行时确定Message其属性的类:Event

在 System.Text.Json 我必须使用此代码将其序列化为EventJSON,然后将其再次反序列化为最终类型:

在 JSON.NET 中,该类是:

并且Event只需要反序列化:

0 投票
2 回答
1059 浏览

c# - 在 ASP.NET Core 3 中使用 System.Text.JSON:决定端点上漂亮的 JSON 输出?

使用 ASP.NET Core 3 和 System.Text.Json,您可以通过添加返回格式精美的 JSON

到您的 Startup.cs ...

...但这意味着,它可以为所有端点全局打印所有 JSON 输出。

有没有办法在端点级别决定漂亮与否,例如通过查询字符串“pretty=true”?:

在你的 Controllers/PersonController.cs 你可以做......

...但这显然会为格式精美的 JSON 返回错误的 Content-Type。

我还看不到的任何解决方案?