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 JsonHelper

Newtonsoft.Json 序列化小写首字母

Newtonsoft JSON:TypeNameHandling - $type 用途

JsonHelper

Newtonsoft.Json 序列化 排除指定字段或只序列化指定字段

Newtonsoft JSON.NET 与 Json Web 服务的兼容性