我不知道如何解决这个问题。我能想到的解决这个问题的方法是,我的开发机器工作完美是 32 位,其他测试的计算机是 64 位(顺便说一句,我周围没有其他 32 位机器可以测试)。无论如何,这是一个奇怪的场景。
现在来说说这个问题:
我在用Newtonsoft JSON 库在我的 C# 应用程序中。我有以下 C# 类要序列化:
class sync_object
{
//newtonJson give bad keys to these object names on 64bit systems
public Dictionary<string, List<Dictionary<string, string>>> table_records { get; set; }
public Dictionary<string, List<string>> class_list_with_subjects_offered { get; set; }
public Dictionary<string, List<string>> class_list_with_scoreheads_offered { get; set; }
public List<string> class_groups_ordered { get; set; }
}
创建实例后sync_object
并用数据填充它,我做了JsonConvert.SerializeObject(instance_of_sync_object)
并发送到我的服务器。然后,当我记录服务器端(Laravel PHP)收到的 JSON 时,我得到了一个完美的 JSON 转储到 PHP 中,如下所示:
array ( 'table_records' => array ( 'personal_db' => array (...) ) , 'class_groups' => array(...) )
然而,在另外 2 台计算机(我的应用程序用户)上,我得到与上面相同的 JSON 结构,但唯一的区别是所有第一级 JSON 键(如上面的“table_groups”和“class_groups_ordered”)都被替换为以下奇怪的字符(您可能需要使用光标选择它以观察它包含许多不可打印的字符):
'' =>
正如我之前提到的,这些计算机和我的计算机之间唯一明显的区别是我的计算机是 32 位计算机,而他们的计算机是 64 位计算机。
另外,作为提供更多信息的一种方式,由于 JSON 转储是在我的 Laravel 后端中使用 Monolog 完成的,因此我可以查看 Chrome 中的 DOM 检查器,如下所示:
My normal JSON:
The weird JSON from the other guys:
所有这些计算机上都运行相同的 Newtonsoft Json 库。