When I run the following code in a windows console application referencing AWSSDK.Core.3.3.19.1\lib\net45\AWSSDK.Core.dll, I get nice output:
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);
}
The output (formatting added) is:
{
"Name":"William Shakespeare",
"Age":51,
"Birthday":"04/26/1564 00:00:00"
}
But when I run the same code referencing AWSSDK.Core.3.3.19.1\lib\MonoAndroid10\AWSSDK.Core.dll, I get different results:
EDIT Original post had different code here, but I was able to reproduce the problem with the same code.
The alternate version looks like this:
{
"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"
}
Is this a bug? Can I work around it and clean this up? I assume I need to use the Android version in order to run on an Android device, but interestingly, I can reference the MonoAndroid10 version from a Windows console application. Why are there different files for different platforms when .NET is cross-platform?
I've tested the latest
AWSSDK.Core(3.3.21.6), this issue persists.Then I also tested
LitJsonseparatly with latest version(0.11.0). There is no such issue.So the problem appears to be exists only in
AWSSDK.Core. Until the framework author fix the issue, the workaround for your problem is to referenceLitJsonseparately and useLitJson.JsonMapperinstead ofThirdParty.Json.LitJson.JsonMapper.