0

当我在引用 AWSSDK.Core.3.3.19.1\lib\net45\AWSSDK.Core.dll 的 Windows 控制台应用程序中运行以下代码时,我得到了很好的输出:

public class Person
{
   public string Name { get; set; }
   public int Age { get; set; }
   public DateTime Birthday { get; set; }
}

public static void PersonToJson()
{
   Person bill = new Person();

   bill.Name = "William Shakespeare";
   bill.Age = 51;
   bill.Birthday = new DateTime(1564, 4, 26);

   string json_bill = JsonMapper.ToJson(bill);

   Console.WriteLine(json_bill);
}

输出(添加格式)是:

{  
   "Name":"William Shakespeare",
   "Age":51,
   "Birthday":"04/26/1564 00:00:00"
}

但是当我运行引用 AWSSDK.Core.3.3.19.1\lib\MonoAndroid10\AWSSDK.Core.dll 的相同代码时,我得到不同的结果:

编辑原始帖子在这里有不同的代码,但我能够用相同的代码重现问题。

替代版本如下所示:

{  
   "Name":"William Shakespeare",
   "Age":51,
   "Birthday":"04/26/1564 00:00:00",
   "<Name>k__BackingField":"William Shakespeare",
   "<Age>k__BackingField":51,
   "<Birthday>k__BackingField":"04/26/1564 00:00:00"
}

这是一个错误吗?我可以解决它并清理它吗?我假设我需要使用 Android 版本才能在 Android 设备上运行,但有趣的是,我可以从 Windows 控制台应用程序中引用 MonoAndroid10 版本。.NET跨平台时,为什么不同平台会有不同的文件?

4

2 回答 2

1

这是一个错误吗?我可以解决它并清理它吗?我假设我需要使用 Android 版本才能在 Android 设备上运行,但有趣的是,我可以从 Windows 控制台应用程序中引用 MonoAndroid10 版本。.NET跨平台时,为什么不同平台会有不同的文件?

我已经测试了最新的AWSSDK.Core(3.3.21.6),这个问题仍然存在。

然后我还LitJson用最新版本(0.11.0)单独测试。不存在这样的问题。

所以问题似乎只存在于AWSSDK.Core. 在框架作者解决问题之前,您的问题的解决方法是LitJson单独引用并LitJson.JsonMapper使用ThirdParty.Json.LitJson.JsonMapper.

于 2018-01-16T04:51:43.123 回答
0

您的 Outpot 代码完全不同。它必须处理数组。面对这种情况,它有两种选择:

  • 仅显示 .ToString() 的结果。在 .NET 中,这通常是类名
  • 以原始程序员想要的任何详细程度对数组内容进行转储

输出这样的数组仅对调试有用。所以已经让你正确的输出代码了。

至于生日:显示的是存储在 DateTIme 中的原始值,而不是使用系统选择的格式重新解释。它可能类似于“自计数开始以来的滴答声/秒数”。老实说,我很惊讶 DateTime 甚至可以显示该值。

于 2018-01-16T01:02:04.713 回答