从C#Enum到函数/对象名称的Json序列化

时间:2013-08-25 23:13:52

标签: c# json

我需要以下输出

{hello =“world”,test = aobjectname}

我尝试在c#和enum{aobjectname}

中进行[JsonConverter(typeof(StringEnumConverter))]

其他任何人都知道如何获得想要的输出。我试过的东西给出test = 1或test =“aobjectname”。

1 个答案:

答案 0 :(得分:2)

这不是有效的JSON。 JSON 中的字符串值用引号括起来。所以test:"aobjectname"是正确的输出,世界上没有JSON序列化器会在没有这些引号的情况下为你提供任何输出。

JSON是一种语言。语言有规格。和JSON language specification状态一样,JSON对象遵循这种结构:

Object structure

它还指出,字符串值遵循此结构:

String structure

如果你违反了这些原则,那么你不再拥有JSON,而是你自己制作的东西,这是基于在JSON上。在极少数情况下,这可能是好的。但是你需要知道你正在做出的牺牲:这是你自己设计的一种语言,所以你需要提供围绕该语言的所有工具,包括但不限于:序列化器和反序列化器,MIME类型,验证器,等

简而言之,您的对象应如下所示:

{hello: "world", test: "aobjectname"}

{hello: "world", test: 1}

顺便说一句,如果您需要将"aobjectname"转换回枚举值,可以使用Enum.Parse方法执行此操作。