JsonConvert.SerializeObject正在将字符(char)中的属性值更改为数字(int)

时间:2017-04-20 13:21:19

标签: c# serialization json.net

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"

结果因源属性中的哪个字符而异,并且始终一致;

  • C - > 0
  • D - > 1
  • G - > 5
  • M - > 4
  • PC - > 2
  • PD - > 3
  • PM - > 6

修改

var serializedResponse = JsonConvert.SerializeObject(response);

1 个答案:

答案 0 :(得分:1)

您获得的回复最有可能将PropertyInQuestion设置为Enum

JsonConvert.SerializeObjectEnum序列化为int 并且因为在反序列化时属性是动态的,所以返回一个int。

但是,您可以使用Newtonsoft.Json.Converters.StringEnumConverter并将其序列化为字符串。 这也意味着在反序列化时你会得到一个字符串。(不是枚举)

var serializedResponse = JsonConvert.SerializeObject(response, new StringEnumConverter());