C# JsonConvert.SerializeObject正在将属性值从字母(char)更改为数字(int)

C# JsonConvert.SerializeObject正在将属性值从字母(char)更改为数字(int),c#,serialization,json.net,C#,Serialization,Json.net,JsonConvert.SerializeObject正在将属性值从字母更改为数字。我说'letters'和'number'是一个动态源对象,前后都是字符串,但源动态对象中的值'D'在序列化为JSON后显示为'1' SourceObject public class Response { public dynamic DataBlocks { get; set; } } Response.DataBlocks.dynamic.dynamic.PropertyInQuestion==“D

JsonConvert.SerializeObject正在将属性值从字母更改为数字。我说'letters'和'number'是一个动态源对象,前后都是字符串,但源动态对象中的值'D'在序列化为JSON后显示为'1'

SourceObject

public class Response
{
    public dynamic DataBlocks { get; set; }
}
Response.DataBlocks.dynamic.dynamic.PropertyInQuestion==“D”

序列化代码

var serializedResponse = JsonConvert.SerializeObject(response);
结果为serializedResponse.dynamic.dynamic.PropertyInQuestion==“1”

结果因源属性中的字符而异,且其始终一致

  • C->0
  • D->1
  • G->5
  • M->4
  • PC->2
  • PD->3
  • 下午->6点
编辑

 public enum PropertyInQuestionType {
    C,
    D,
    PC,
    PD,
    M,
    G,
    PM,
    PG,
    U,
    KP,
}

您得到的响应很可能是将
PropertyInQuestion
设置为
Enum

jsonvert.SerializeObject
Enum
序列化为
int

因为反序列化时属性是动态的,所以返回int

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


请发布相关代码,以便我们可以看到您正在使用的动态源对象with@Thinkingcap抱歉,添加了示例代码和更多detail@TomRiley这还不够。显示实际将属性设置为“D”的代码。请参阅:。@OfirWinegarten没有其他代码,它是一个来自服务的动态响应,我正在序列化为json。源动态的属性有一个“D”,生成的JSON在它的位置有一个“1”…因此,检查debug类型的
PropertyInQuestion
。这可能是一个很好的解释!没有看到它是一个动态类型删除了我的评论
var serializedResponse = JsonConvert.SerializeObject(response, new StringEnumConverter());