串行C#对象返回的JSON计算机之间的差异

时间:2019-03-18 14:47:14

标签: c# json serialization json.net javascriptserializer

我以前asked a question here on SO曾对此问题进行过调查,但现在我发现我并未对此问题进行过多调查,因此我错误地得出结论,错误是我所使用的(Newtonsoft)JSON库中的错误,如上一个问题。

在使用Microsoft的Web.Script.Serialization进行测试之后,仍然存在完全相同的问题,因此,我认为将其作为一个单独的SO问题来询问是合适的;这样问题才能吸引具有适当标题的适当受众。

除了上述说明之外,问题仍然相同,下面有更多详细信息:

在我的C#应用​​程序中。我有以下c#类要序列化:

class resultCommentsJsonMask
{
    public List<resultCommentAuthorityEntry> authorities { get; set; }
    public resultCommentTypes globalComments { get; set; }
    public List<string> commentTypes { get; set; }
}


public class resultCommentAuthorityEntry
{
    public string name { get; set; }
    public string description { get; set; }
    public string commentType { get; set; }
    public bool useGlobalSelectableComments { get; set; }
    public bool useGlobalAutomatedComments { get; set; }
    public resultCommentTypes comments { get; set; }
}

public class resultCommentTypes
{
    public string selectable { get; set; }
    public List<resultCommentBoundary> automated { get; set; }
}

public class resultCommentBoundary
{
    public decimal lowerRange { get; set; }
    public decimal upperRange { get; set; }
    public string comment { get; set; }
}

创建resultCommentsJsonMask的实例并填充数据后,我做了JsonConvert.SerializeObject(instance_of_resultCommentsJsonMask)

但是,在另外两台计算机(我的应用程序用户)上,所有JSON密钥都被替换为奇怪的字符。

这些计算机和我的计算机之间唯一明显的区别是,我使用的是32位Windows 7 PC,而我的计算机是64位Windows10。现在,更加令人困惑的是,我得到了另一台Windows 10 PC,该计算机的工作原理完全正确就像我自己的Win 7电脑。

我将应用程序转换为控制台应用程序,并在PC上将序列化的JSON输出记录到控制台,然后得到了以下正确的JSON输出:

enter image description here

但是,这些其他(Windows 10)PC上的控制台输出中的问号形式的文本乱码了,这些字符意味着JSON键(例如,我上面的控制台输出中的“ Authorities”,“ Name”等),如下所示:

enter image description here

还要注意,即使我使用Microsoft的Javascriptserializer JSON库而不是Newtonsoft,该问题仍然存在,这使我不得不断定这是“与库无关”的问题。

修改

上面用于生成控制台输出的相关代码:

var json = serializer.Serialize(commentsStore);
Console.WriteLine(string.Format("Setting store: {0}", json));

0 个答案:

没有答案