gpt4 book ai didi

c# - C# "dynamic"类型的对象是否可以始终序列化为有效的 JSON?

转载 作者:太空宇宙 更新时间:2023-11-03 17:47:52 25 4
gpt4 key购买 nike

我在 dotnet 核心应用程序中收到一个正文,其中一个字段可以是随机 JSON。为了简单起见,我决定使用动态类型(我直接将其保存在数据库中,而不必弄乱它)。

我需要确保该字段存在,它代表一个有效的 JSON 对象。

由于动态对象的工作方式与 JSON 对象非常相似,我可以假设任何 C# 动态对象都是有效的 JSON 吗?

最佳答案

Since a dynamic object works pretty much like a JSON object, can I assume that any C# dynamic objects are valid JSON?



简短的回答:没有。

更长的答案:你问题的第一部分表明你对 dynamic 有一个非常非常错误的想法。在 C# 中表示。 dynamic简单的意思是“将这个程序片段的分析推迟到运行时;分析它,就好像对象的运行时类型是它的编译时类型一样”。

您甚至不需要任何像 JSON 对象这样模糊的东西来使用 dynamic在 C# 中:
class Foo { public void M() { }}
class Bar { public void M() { }}
...
object o = X() ? (object) new Foo() : (object) new Bar();
o.M(); // Illegal.
dynamic d = o;
d.M(); // Legal; calls either Foo.M or Bar.M

不涉及 JSON。相反, dynamic替换为 objectd 类型的编译器, 和 d.M()直到运行时才进行分析以确定它是否具有方法 M ;事实 d.M()无法在编译时进行分析被抑制。

简而言之: dynamic只是 object戴着一顶有趣的帽子。你不能对 dynamic 做任何假设。除非你也可以对 object 做出这样的假设.

关于c# - C# "dynamic"类型的对象是否可以始终序列化为有效的 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59276044/

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