Newtonsoft.JSON serializeobject 返回空 JSON 字符串 [重复]
Posted
技术标签:
【中文标题】Newtonsoft.JSON serializeobject 返回空 JSON 字符串 [重复]【英文标题】:Newtonsoft.JSON serializeobject returns empty JSON string [duplicate] 【发布时间】:2018-08-01 13:04:29 【问题描述】:每个人都经常遇到这个问题,我几乎尝试了所有方法,但没有一个对我有用。
所以我正在 Xamarin.Forms 中进行开发,并将我的数据发送到服务器。我有这门课:
public class Customer
public string FirstName get; set;
public string LastName get; set;
public string BirthDate get; set;
public string Password get; set;
public string EmailAddress get; set;
public string ContactNumber get; set;
然后我使用了 Newtonsoft 的 SerializeObject 方法:
Customer customer = new Customer
FirstName = FirstName.Text,
LastName = LastName.Text,
BirthDate = BirthDate.Date.ToString(),
EmailAddress = Email.Text,
Password = Password.Text,
ContactNumber = Mobile.Text
;
var item = JsonConvert.SerializeObject(customer);
但变量 item
会生成一个包含空 JSON 对象 的字符串。我的实现有问题吗?
编辑:另外,我注意到虽然我的 Customer 类及其成员是公共的,但调试器仍将它们视为“非公共”成员。请看“调试器截图”:
【问题讨论】:
去掉[Serializable]属性 如果传入“一个对象”,我怀疑 SerializeObject 返回 null。它仍然应该返回“一些 JSON”(或 一个字符串),即使它没有按预期序列化。 另外,我注意到虽然我的 Customer 类是公开的,但它的成员是非公开的——如果这是真的,那么它们将不会被序列化。请参阅Why are some members missing when trying to print an object by serializing to JSON? 以获取解释和修复选项。但是,在您的问题中,属性 是 公开的。那么,它是什么? 那么可能相关或重复:JsonConvert.SerializeObject always return in XamarinForms. @dbc 就是这样!!我通过 USB(而不是 Xamarin Live Player)插入我的设备,现在它可以工作了! 【参考方案1】:您的问题有点误导,因为您将类属性显示为公开。
另外,我注意到虽然我的 Customer 类是公开的,但它的成员是非公开的:
话虽如此,这些是您的选择:
-
如果您的属性可以公开,请将其设为公开
如果属性需要保持私有,请将
[JsonProperty]
属性添加到它们
【讨论】:
对此表示歉意,我的意思是 - 我已将它们全部公开。但是调试器仍然将它们视为“非公开”。请看“调试器截图” @Lala 您的支持字段是非公开的,但您的属性是公开的。【参考方案2】:Xamarin Live Player 的序列化程序似乎存在一些问题。我尝试通过 USB 插入我的手机,它可以工作!
【讨论】:
很高兴你成功了!以上是关于Newtonsoft.JSON serializeobject 返回空 JSON 字符串 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Newtonsoft JSON:TypeNameHandling - $type 用途