【发布时间】:2016-05-10 20:40:14
【问题描述】:
当 Linking 设置为 SDK Assemblies Only 时,JsonConvert.DeserializeObjects 方法有效,但是当我使用 Linker Properties 中的 Link SDK 和 User Assemblies 选项构建项目时,它不起作用,它在所有字段中返回 null反序列化的对象。
【问题讨论】:
标签: xamarin xamarin.forms
当 Linking 设置为 SDK Assemblies Only 时,JsonConvert.DeserializeObjects 方法有效,但是当我使用 Linker Properties 中的 Link SDK 和 User Assemblies 选项构建项目时,它不起作用,它在所有字段中返回 null反序列化的对象。
【问题讨论】:
标签: xamarin xamarin.forms
您需要将[Preserve(AllMembers = true)] 属性放在任何动态生成的类上。这将防止它们被剥离。
您可以在iOS linker here 上阅读更多信息。
假设您当前有一个要反序列化的用户列表,您可以这样说。
var user = JsonConvert.DeserializeObject<User>(json);
在您的 User 类中,您需要将属性放在该类上。
[Preserve(AllMembers = true)]
public class User{
public string Email { get; set; }
public string FirstName { get; set; }
public string Lastname { get; set; }
}
【讨论】:
JsonConvert.DeserializeObject的类中添加[Preserve(AllMembers = true)]。