gpt4 book ai didi

c# - 使用无效标记反序列化 Json

转载 作者:行者123 更新时间:2023-12-03 22:03:13 26 4
gpt4 key购买 nike

我目前正在尝试解决我们试图反序列化的无效 Json 的情况。关键是我们提供了 Json,其中属性分配是用 = 而不是 : 字符声明的。

示例 Json:

{
"Field1" = "Hello",
"Field2" = "Stuff",
"Field3" = "I am non-Json Json, fear me",
"Field4" = 8
}

有没有人有幸使用 Json.Net 将其反序列化为与 C# 相关结构的对象,其中使用 = 而不是 :

我一直在尝试编写一个 JsonConverter 来读取 = 但它总是提示它有一个 = 而不是 : 并抛出异常消息“Expected ':' but got: =. Path ''”。

除了编写我自己的反序列化过程并且不使用 Json.Net 库之外,我看不出有什么办法可以解决这个问题。这对如此接近有效 Json 的东西来说很糟糕(但我认为这很公平,因为它是无效的)

reader.ReadAsString(); 被命中时,它应该读出 Field1 但显然它还没有遇到它的 friend :所以继续摔倒说“这到底在做什么?!”。我没有任何 JsonConverter 实现示例,因为确实没什么可展示的。只有我尝试使用任何“读取...”方法,但没有成功。

最佳答案

如果使用 = 而不是 : 字符声明属性赋值,则它不是 JSON。

如果你不希望对象的值中有任何=,那么你可以做一个

string json = invalidData.Replace("=", ":");

然后尝试解析它。

如@Icepickle 所述,这样做存在风险。

我的回答是一种快速修复/解决方法,但您最终需要确保您收到的数据是有效的 JSON。

尝试反序列化无效的 JSON 毫无意义。

关于c# - 使用无效标记反序列化 Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37681071/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com