Xamarin 链接SDK和用户程序集后,JsonConvert.DeserializeObjects不起作用

Xamarin 链接SDK和用户程序集后,JsonConvert.DeserializeObjects不起作用,xamarin,xamarin.forms,Xamarin,Xamarin.forms,当链接仅设置为SDK程序集时,JsonConvert.DeserializeObjects方法有效。但当我使用链接器属性中的链接SDK和用户程序集选项构建项目时,该方法无效,它在反序列化对象的所有字段中返回null 您需要将[Preserve(AllMembers=true)]属性放在任何动态生成的类上。这将防止它们被剥离 你可以在网上阅读更多 假设您当前有一个要反序列化的用户列表,您可以这样说 var user = JsonConvert.DeserializeObject<User&g

当链接仅设置为SDK程序集时,JsonConvert.DeserializeObjects方法有效。但当我使用链接器属性中的链接SDK和用户程序集选项构建项目时,该方法无效,它在反序列化对象的所有字段中返回null

您需要将
[Preserve(AllMembers=true)]
属性放在任何动态生成的类上。这将防止它们被剥离

你可以在网上阅读更多

假设您当前有一个要反序列化的用户列表,您可以这样说

var user = JsonConvert.DeserializeObject<User>(json);

谢谢@Andres,但Newtonsoft是一个库,我不能在其中添加保留属性。问题在于Newtonsoft库中类JsonConvert的方法反序列化对象。我希望你明白我的意思。@AkashAmin你不要把Preserve属性放在Newtonsoft库中。您将它放在要反序列化到的类上。我在回答中添加了一个例子。谢谢你@Andres,它解决了我的问题。我以为链接器会从库中剥离代码,没想到它也会剥离我的模型。我看到我的模型中的不同字段被剥离,因此没有进行反序列化。现在它正在工作。如果它仍然不工作,您还可以将
[Preserve(AllMembers=true)]
添加到调用
jsonvert.DeserializeObject
的类中。
[Preserve(AllMembers = true)]
public class User{
  public string Email { get; set; }
  public string FirstName { get; set; }
  public string Lastname { get; set; }
}