LitJson序列化使用AWS SDK for MonoAndroid10生成的额外垃圾

时间:2018-01-16 00:17:23

标签: c# android xamarin aws-sdk litjson

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

  app.post('/upload_audio', function(req, res) {
  if (!req.files)
    return res.status(400).send('No files were uploaded.');

  // The name of the input field (i.e. "sampleFile") is used to retrieve the uploaded file
  let sampleFile = req.files.sampleFile;

  // Use the mv() method to place the file somewhere on your server
  sampleFile.mv('/somewhere/on/your/server/filename.jpg', function(err) {
    if (err)
      return res.status(500).send(err);

    res.send('File uploaded!');
  });
});

输出(添加的格式)是:

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);
}

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

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

备用版本如下所示:

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

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

2 个答案:

答案 0 :(得分:1)

  

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

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

然后我还用最新版本(0.11.0)分别测试了LitJson。没有这样的问题。

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

答案 1 :(得分:0)

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

  • 仅显示.ToString()的结果。在.NET中通常是 班级名称
  • 执行数组内容的转储,无论原始程序员想要的任何细节级别

输出这样的数组仅对调试很有用。因此,请为您提供正确的输出代码。

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