问题标签 [jsonconverter]

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 投票
0 回答
22 浏览

json.net - 在 Json.NET 中具有自定义键和值的字典

我有一本字典,它使用类作为键和值。对于这些类,我创建了 JsonConverters 以特定方式对它们进行序列化/反序列化。为了正确序列化字典,我使用了在https://newbedev.com/how-can-i-serialize-deserialize-a-dictionary-with-custom-keys-using-json-net找到的以下 JsonConverter 。

这确实有效,但序列化的字典条目采用这种形式

{“键”:“键类”,值”:“值类”}

其中 KeyClass 和 ValueClass 是键和值类的序列化输出。我想要的是让每个条目看起来像这样

“键类”:“值类”

我该怎么做呢?

0 投票
0 回答
20 浏览

json - 是否允许在自定义 JsonConverter 中更改 JsonSerializer 的某些设置?

创建自定义 JsonConverter 并覆盖时,从该JsonSerializer 序列化public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)程序更改某些设置是否有效,例如:

这似乎是一个有效的操作,因为序列化程序的类型JsonSerializer表明它是原始 JsonSerializer 的副本。

0 投票
0 回答
29 浏览

java - 忽略@JsonIgnoreProperties 检查

有一个用@JsonIgnoreProperties(基类)注释的类和一些扩展它的子类。现在,在一个 Post API 中,请求主体(地图)可以是任何子类的类型。我已经编写了代码来创建基于附加类型属性的基类实例(使用对象映射器)。但是由于我的基类和子类都用 注释@JsonIgnoreProperties,即使我发送了不正确的属性和数据对,映射也不会失败。

我怎么会失败呢?还有其他 API 使用这个基类和子类,因此我不想篡改现有的类。有没有办法在切换案例转换期间取消这个忽略检查或其他东西?

0 投票
1 回答
145 浏览

.net - 使用 System.Text.Json.Serialization.JsonConverter 解决 JSON 序列化过程中复杂类型的循环引用

有一个复杂类型引用了相同类型的对象(有时是相同的对象):

有一个自定义的 JsonConverter (System.Text.Json.Serialization) 实现来反序列化这个对象,避免一些特殊的属性。

但是在对象指向自身的情况下如何配置引用解析尚不清楚。例子:

发生异常:

我们使用 System.Text.Json,版本=5.0.0.0

默认对象转换器的所有基于 '$ref' 和 '$id' 的方法都是内部的,无法使用。我看到的唯一方法是在序列化之前在某些 DTO 中简化 User 对象,并在完全没有此自定义转换器的情况下使用它。

但也许有人知道在自定义 JsonConverter 中是否有解决这些引用的正确方法?

0 投票
0 回答
79 浏览

c# - 自定义 JsonConverter 永远不会被 MVC 模型绑定器/控制器调用

我有一个自定义类型,我希望 MVC 模型绑定器使用我的 System.Text.Json 的自定义 JsonConverter 序列化/反序列化。这是我的实现:

自定义转换器:

使用上述输入:

使用 employeeTypeEnum 的模型:

阿贾克斯调用:

控制器:

在控制器中,EmployeeRank 始终为空。我在自定义转换器的读取和写入中都设置了一个断点,但没有命中。我还覆盖了 CanConvert 方法,也没有在其中插入它。我浏览了有关此主题的许多 SO 帖子,但大多数都找到了解决方法。什么可能导致不调用自定义序列化程序?谢谢

0 投票
1 回答
93 浏览

c# - Azure Function Json 序列化问题

在编排函数之间传递信息时,我的自定义序列化程序有时无法正常工作,我不知道这是否是因为对象是如何嵌套/构造的,或者这是否与持久函数以及我的方式有关m 实现序列化器。大多数情况下,它似乎在由持久客户端调用的 Ochestration 内的 Activity 调用上失败。

这是详细信息:

所以我有一个自定义基类,它本质上是一个string Enum(它是我在 Stack Overflow 上找到的想法的汇编)

我有两个实现:

我写了一个自定义JsonConverter来处理这个类的 JSON 转换

然后我在函数启动中实现了它

我有一个类使用ReportType

和一个同时使用两者ReportType并在另一个类ReportStatus中使用的类list

ReportsRequestOptions当我将数据从我的主编排函数移动时使用,HttpTrigger但是当我将 a 传递ClientReportsRequest到子编排中时,JsonConverter 似乎不起作用,这些值只是Null它们通常显示的字符串。我可以在转换器中放置一个断点并查看它是否被调用,但由于某种原因,这些值没有出现在我的本地人中,所以我无法检查它以找出发生这种情况的原因。

执行:

这几天我一直在打我的头,找不到答案,有人有什么想法吗?有没有更好的方法我应该序列化这个?

0 投票
0 回答
50 浏览

c# - JsonConvert 没有进行完整的反序列化

我有这个json

这些是我的班级属性

当我使用 JsonConvert 反序列化我的 json 时,它正在解析除 BrowserSTackConfig 对象之外的所有值,该对象以“null”形式出现。我不知道我错过了什么,对我来说一切都很好。

帮助表示赞赏!

0 投票
1 回答
36 浏览

json - 如何用 vba 解析多级 json?

我将如何解析这个 Json 字符串?

'{ ' "领土": { ' "RSC": { ' "sector": 1, ' "size": 3, ' "density": 2, ' "slots": 18, ' "daily_respect": 113, ' “派系”:13784,'“coordinate_x”:“3199.2”,'“coordinate_y”:“2828.32”,'},'“HSC”:{'“扇区”:1,'“大小”:4,'“密度": 3, ' "插槽": 26, '"daily_respect": 197, ' "faction": 13784, ' "coordinate_x": "3457.41", ' "coordinate_y": "2785.98", ' }, ' "JSC": { ' "sector": 1, ' "size ": 2, ' "密度": 3, ' "slots": 8, ' "daily_respect": 141, ' "faction": 13784, ' "coordinate_x": "3479.67", ' "coordinate_y": "2819.67", ' }, '"NTC": { ' "sector": 1, ' "size": 3, ' "density": 2, ' "slots": 21, ' "daily_respect": 113, ' "faction": 13784, ' "coordinate_x" : "3416.45", ' "coordinate_y": "2868.95", ' }, ' "OTC": { ' "sector": 1, ' "size": 4, ' "density": 3, ' "slots": 24 , ' "daily_respect": 197, ' "派系”:13784,'“coordinate_x”:“3417.68”,'“coordinate_y”:“2904.79”,'},'“QTC”:{'“扇区”:1,'“大小”:3,'“密度” : 2, ' "slots": 12, ' "daily_respect": 113, ' "faction": 13784, ' "coordinate_x": "3395.34", ' "coordinate_y": "3039.22", ' }, ' "RTC": { ' "扇区": 1, '"size": 3, ' "density": 2, ' "slots": 16, ' "daily_respect": 113, ' "faction": 13784, ' "coordinate_x": "3366.33", ' "coordinate_y": "3012.11 ", ' }, ' "TTC": { ' "sector": 1, ' "size": 4, ' "density": 3, ' "slots": 28, ' "daily_respect": 197, ' "faction" : 13784, ' "坐标x":"3244.33",'"坐标y":"2799.8",'},'"UTC":{'"扇区":1,'"大小":3,'"密度":2,'"槽" : 12, ' "daily_respect": 113, ' "faction": 13784, ' "coordinate_x": "3278.81", ' "coordinate_y": "2756.83", ' "racket": { ' "name": "Truck Stop II ", ' "等级": 2, '"reward": "20x Can of Munster daily", ' "created": 1604663824, ' "changed": 1645588625, ' }, ' },

块 ID 打印正确,但不是“扇区”。对于尺寸,密度,插槽等,我必须相同,而“球拍”及其物品则需要另一个级别。我一直在研究字典和收藏,但无法弄清楚。请帮忙!