JsonConvert.SerializeObject正在将字符值的属性值更改为数字。我说'字母'和'数字'作为一个动态源对象,前后都是字符串,但值为' D'在源动态对象中出现的' 1'在序列化为JSON之后。
SourceObject
arguments
Response.DataBlocks。 dynamic.dynamic .PropertyInQuestion ==" D"
序列化代码
public class Response
{
public dynamic DataBlocks { get; set; }
}
serializedResponse中的结果。 dynamic.dynamic .PropertyInQuestion ==" 1"
结果因源属性中的哪个字符而异,并且始终一致;
修改
var serializedResponse = JsonConvert.SerializeObject(response);
答案 0 :(得分:1)
您获得的回复最有可能将PropertyInQuestion
设置为Enum
JsonConvert.SerializeObject
将Enum
序列化为int
并且因为在反序列化时属性是动态的,所以返回一个int。
但是,您可以使用Newtonsoft.Json.Converters.StringEnumConverter
并将其序列化为字符串。
这也意味着在反序列化时你会得到一个字符串。(不是枚举)
var serializedResponse = JsonConvert.SerializeObject(response, new StringEnumConverter());