【问题标题】:Strange JSON Deserialization c#奇怪的 JSON 反序列化 c#
【发布时间】:2016-05-26 10:53:24
【问题描述】:

我在一些反序列化方面遇到了麻烦,因为我没有像以前那样收到一个对象,而是一个数组。让我们看看代码,我是怎么做的:

收到 JSON:

[{"gcm_regID":"fsdf2156fw62f1wfwe512g"}]

反序列化

var result = JsonConvert.DeserializeObject<Gcm>(response);

尝试过的处理程序:

public class Gcm
{
    public List<Gcm_reg> gcm_regID { get; set; }
}
public class Gcm_reg
{
    public string gcm_regID { get; set; }
}

我也只尝试了 Gcm_reg,但似乎没有任何效果。我怎样才能反序列化这个?顺便说一句,我正在使用 newsoft JSON。

最好的问候,

【问题讨论】:

    标签: c# json serialization deserialization


    【解决方案1】:
     IEnumerable<Gcm_reg> result =  JsonConvert.DeserializeObject<IEnumerable<Gcm_reg>>(response);
    

    您可以将对象反序列化为数组或 IEnumerable

    【讨论】:

    • 成功了。你能解释一下我怎样才能形成类似的对象来发送吗?服务器很糟糕,我正在尝试发布帖子,但它接收到以 [ 开头的相同类型的 JSON
    • 创建一个要发送的对象数组,然后将其序列化。例如 JsonConvert.SerializeObject(new []{whateverobject_instance})
    • 发送定义一个 Gcm_reg 类型的列表并使用 Add 方法填充列表并将列表发送到服务器
    • 试试这个 JsonConvert.SerializeObject(new []{gcm_reginstance})
    【解决方案2】:

    对象应该是这样的

    public class Gcm
    {
        public string gcm_regID { get; set; }
    }
    

    那就试试吧

    var result = JsonConvert.DeserializeObject<IEnumerable<Gcm>>(response);
    

    您可以使用link直接从Json生成类

    创建相同类型的对象

    var outputList = new List<Gcm>();
    
    //loop through this part based on number of input
    var itemToAdd = new Gcm();
    itemToAdd .regID  = 'something';
    outputList.Add(itemToAdd );
    

    并将 outputList 发送到服务器。

    【讨论】:

    • 谢谢,我一直在使用它,但它没有起作用,因为我在这里 :( image.prntscr.com/image/3f1129357ee446a98e39131749279845.png 你可以看到我正在使用类 Gcm_reg 而什么都没有
    • @Antoine 错过了数组部分.. 已更正...请重试
    • 现在可以了 :) 你能解释一下如何创建类似的请求吗?服务器只接收那种信息而不是普通对象-.-'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-07
    相关资源
    最近更新 更多