问题标签 [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.
c# - 使用 .NET core 3.0/System.text.Json 解析 JSON 文件
System.Text.Json
我正在尝试使用.NET Core 3.0 中的新 JSON 阅读器读取和解析无法放入内存的大型 JSON 文件。
Microsoft 的示例代码将 aReadOnlySpan<byte>
作为输入
我正在努力寻找的是如何实际将此代码与 a 一起使用FileStream
,将 aFileStream
放入 aReadOnlySpan<byte>
中。
我尝试使用以下代码读取文件并 ReadAndProcessLargeFile("latest-all.json");
它与错误消息一起崩溃
作为参考,这是我使用 Newtonsoft.Json 的工作代码
c# - JsonConverter 等效于使用 System.Text.Json
我开始将我拥有的一些代码迁移Newtonsoft.Json
到System.Text.Json
.net Core 3.0 应用程序中。
我从
[JsonProperty("id")]
到[JsonPropertyName("id")]
但我有一些用属性装饰的JsonConverter
属性:
[JsonConverter(typeof(DateTimeConverter))]
[JsonPropertyName("birth_date")]
DateTime BirthDate{ get; set; }
System.Text.Json
但是我在Does someone know how can be implemented in .net Core 3.0中找不到这个Newtonsoft转换器的等价物?
谢谢!
c# - 使用 System.Text.Json.Serialization 解析 json 的异常
我的示例代码非常简单:
最后一行提出:
抛出异常:System.Text.Json.dll 中的“System.NullReferenceException”对象引用未设置为对象的实例。
我究竟做错了什么 ?
(注意这是最新的 .NET Core 3 预览版 5 和最新的 System.Text.Json 4.6.0-preview6.19259.10)
添加无参数构造函数可以防止异常,但是我不想要/不需要无参数构造函数,并且 Json.Net 在没有它的情况下解析得很好。
有没有办法让 System.Text.Json 像 Json.Net 一样使用给定的构造函数进行解析?
c# - .Net Core 3.0 JsonSerializer 填充现有对象
我正在准备从 ASP.NET Core 2.2 迁移到 3.0。
由于我不使用更高级的 JSON 功能(但可能如下所述),并且 3.0 现在带有一个内置的 JSON 命名空间/类System.Text.Json
,我决定看看我是否可以放弃以前的 default Newtonsoft.Json
。
请注意,我知道这System.Text.Json
不会完全取代Newtonsoft.Json
.
我设法在任何地方都做到了,例如
但在一个地方,我填充了一个现有的对象。
一个Newtonsoft.Json
可以做
内置System.Text.Json
命名空间有一些额外的类,比如JsonDocumnet
和JsonElement
,Utf8JsonReader
但我找不到任何将现有对象作为参数的类。
我也没有足够的经验来了解如何利用现有的。
.Net Core 中可能会有一个即将推出的功能 (感谢Mustafa Gursel提供的链接),但与此同时(如果没有的话怎么办),...
...我现在想知道,是否有可能实现与可以做的事情类似的事情PopulateObject
?
我的意思是,是否可以使用其他任何System.Text.Json
类来完成相同的操作,并且只更新/替换属性集?,...或其他一些巧妙的解决方法?
这是我正在寻找的示例输入/输出,它需要是通用的,因为传递给反序列化方法的对象是类型<T>
)。我有 2 个 Json 字符串要解析为一个对象,其中第一个设置了一些默认属性,第二个设置了一些,例如
请注意,属性值可以是除 a 之外的任何其他类型string
。
json字符串1:
json字符串2:
使用上面的 2 个 Json 字符串,我想要一个对象,结果是:
如上例所示,如果第二个属性有值/已设置,它将替换第一个中的值(如“Head”和“Link”),如果没有,则现有值保持(如“Title”)
c# - 我在这里制造泄漏吗?
我正在使用 NETCore 3.0 的 System.Text.Json 命名空间中的新 JsonSerializer 来反序列化 Json 文档,如下所示:
响应定义为:
JsonDocument实现 IDisposable的事实让我想知道,如果保留对Bar
可以包含在 JsonDocument 中的元素 () 的引用,是否会造成内存泄漏?
请注意,通常我会避免将数据存储为像这样的“变体”类型。不幸的是,Bar
属性值的结构在编译时是未知的。
我的怀疑源于 System.Text.Json 宣传的懒惰评估的优势,我不确定这是否涉及延迟 I/O。
asp.net - 使用新的“System.Text.Json”类对 System.Data.DataTable 进行序列化时出现异常(Asp.net core 3.0 preview 8)
我在 asp.net core 3.0 preview 8 中编写了一个 rest api,我试图使用新的“System.Text.Json”类序列化一个 System.Data.DataTable,但是在 Serialize 方法中我收到了异常:
不支持“System.Data.DataTable.ChildRelations”上的集合类型“System.Data.DataRelationCollection”。
使用 newtonsoft json 序列化程序,相同的序列化效果很好。
重现问题的示例代码:
详细异常:
System.NotSupportedException HResult=0x80131515 Message=不支持“System.Data.DataTable.ChildRelations”上的集合类型“System.Data.DataRelationCollection”。Source=System.Text.Json StackTrace: 在 System.Text.Json.JsonClassInfo.GetElementType(Type propertyType, Type parentType, MemberInfo memberInfo, JsonSerializerOptions options) at System.Text.Json.JsonClassInfo.CreateProperty(Type declaredPropertyType, Type runtimePropertyType, Type在 System.Text.Json.JsonClassInfo.AddProperty(Type propertyType, PropertyInfo propertyInfo, Type classType, JsonSerializerOptions options) 在 System.Text.Json.JsonClassInfo..ctor(Type type, JsonSerializerOptions选项)在 System.Text.Json。
你能帮忙吗?
谢谢你。
c# - JsonSerializer 不包含 Parse 的定义
在我正在关注的教程中,他们有这行代码
但我的视觉工作室给了我一个错误
JsonSerializer 不包含 Parse 的定义
这是我的进口
c# - AddNewtonsoftJson 没有覆盖 System.Text.Json
我已将我的 .Net Core 版本从预览版 2 升级到预览版 6,这破坏了一些东西。最重要的是我不能再使用 newtonsoft JSON。
ConfigureServices 中的 AddNewtonsoftJson 似乎什么都不做,而且新的 Json 序列化程序似乎只适用于属性,而不适用于字段。它看不到 JSONIgnoreAttribute。
在 ConfigureServices (在启动中)我有这条线
services.AddMvc(x => x.EnableEndpointRouting = false).AddNewtonsoftJson();
这似乎没有做它应该做的事情。在我的应用程序中,只有属性被序列化,而不是字段,并且[JSONIgnore]
属性什么都不做。
我可以通过提升我需要成为属性的所有公共字段来解决缺少字段,但我需要能够忽略一些。
其他人有这个吗?如何让新的 JSON 序列化程序忽略某些属性并序列化公共字段,或者返回 Newtonsoft?
c# - 你如何使用 System.Text.Json 从一些 json 中读取一个简单的值?
我有这个json
我该如何48e86841-f62c-42c9-ae20-b54ba8c35d6d
摆脱它?我能找到的所有例子都显示做类似的事情
但是我没有适合这个定义的类型,我不想创建一个。我试过反序列化为动态,但我无法让它工作。
任何人都可以提出任何建议吗?
编辑:
我刚刚发现我可以做到这一点:
这确实有效 - 但有更好的方法吗?
.net-core - JsonIgnore 和不支持的集合对象
似乎 System.Text.Json 序列化程序在执行时没有考虑 JsonIgnore 属性 - 我得到了这个异常:
执行此代码时:
新序列化程序的文档有点稀疏 - 我做错了什么吗?