var crmData=(JObject(JsonConvert。反序列化对象(metaData.metaData(;
在上面的表达式中
元数据。元数据包含来自UI的正确值,如下所示
metaData.MetaData = "{ ApplicationFields : { folderId : 3633, reasonCodes: [01,02] }}"
但在JsonConvert之后,crmData包含低于值的
crmData = {{
"ApplicationFields": {
"folderId": 3633,
"reasonCodes": [1,2]
}
}}
正如您所看到的,reasonCodes值已从01转换为1,从02转换为2。
如何避免转换。我也希望crmData中有相同的值。
不清楚您为什么关心那些前导零。正如评论中指出的那样,在使用数字时,它们毫无意义。因此,如果您确实需要它们,请将JSON更改为使用字符串:
reasonCodes: ["01", "02"]
或者,取消序列化为一个合适的C#类,并将类型定义为字符串:
public class Root
{
public Foo ApplicationFields { get; set; }
}
public class Foo
{
public int FolderId { get; set; }
public string[] ReasonCodes { get; set; }
}
然后像这样取消序列化:
var result = JsonConvert.DeserializeObject<Root>(Json);
Console.WriteLine(string.Join(", ", result.ApplicationFields.ReasonCodes));
//Output:
// 01, 02
对于JSON:中的数字,前导零无效
number = [ minus ] int [ frac ] [ exp ]
[...]
int = zero / ( digit1-9 *DIGIT )
数字的起始数字可以是零,也可以是非零。您可以通过使用自定义转换器来解决此问题。