将JSON对象转换为C#对象

时间:2016-10-04 08:35:35

标签: c# json

我有一个json对象,我正在尝试将其转换为我的c#对象。这是我的JSON:

{"GuvenlikNoktaArray": {"GuvenlikNoktası": [{"Id": 1,"GuvenlikNoktası1":"SANTIYE","KartNo":"000001889174217","Sira": 1},{"Id": 2,"GuvenlikNoktası1":"INSAAT","KartNo":"000000803567858","Sira": 2},{"Id": 3,"GuvenlikNoktası1":"ÇALISMA","KartNo":"000003417926233","Sira": 3},{"Id": 4,"GuvenlikNoktası1":"GÜVENLIK","KartNo":"000001888909897","Sira": 4}]}}

我的c#课程:

 public partial class GuvenlikNoktası
{
    public GuvenlikNoktası()
    {
        this.GüvenlikNoktasıOlay = new HashSet<GüvenlikNoktasıOlay>();
        this.PanikButonuAlarmlari = new HashSet<PanikButonuAlarmlari>();
    }

    public int Id { get; set; }
    public string GuvenlikNoktası1 { get; set; }
    public string KartNo { get; set; }
    public string Sira { get; set; }

    public virtual ICollection<GüvenlikNoktasıOlay> GüvenlikNoktasıOlay { get; set; }
    public virtual ICollection<PanikButonuAlarmlari> PanikButonuAlarmlari { get; set; }
}

最后,我的转换尝试:

public void AddIstasyon(string json_string)
{
    GuvenlikNoktası result = new JavaScriptSerializer().Deserialize<GuvenlikNoktası>(json_string);
}

我没有得到任何错误但是当我进行了调试时,我发现'result'中的所有属性都是null。它看起来像一个空物体。我怎样才能得到正确的'GuvenlikNoktası'对象? (顺便说一下,我很确定我正确地获得了json对象)。

3 个答案:

答案 0 :(得分:2)

如果必须按原样保留此JSON结构,则可以使用JObject在JSON属性中导航,直到到达目标对象以进行去隔离。请试试下面的代码;

PS:此代码使用Newtonsoft.Json;

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SO_39847703
{
    class Program
    {
        static void Main(string[] args)
        {
            string json = "{\"GuvenlikNoktaArray\": {\"GuvenlikNoktası\": [{\"Id\": 1,\"GuvenlikNoktası1\":\"SANTIYE\",\"KartNo\":\"000001889174217\",\"Sira\": 1},{\"Id\": 2,\"GuvenlikNoktası1\":\"INSAAT\",\"KartNo\":\"000000803567858\",\"Sira\": 2},{\"Id\": 3,\"GuvenlikNoktası1\":\"ÇALISMA\",\"KartNo\":\"000003417926233\",\"Sira\": 3},{\"Id\": 4,\"GuvenlikNoktası1\":\"GÜVENLIK\",\"KartNo\":\"000001888909897\",\"Sira\": 4}]}}";
            AddIstasyon(json);
        }

        public static void AddIstasyon(string json_string)
        {
            dynamic jsonObject = JObject.Parse(json_string);
            string jsonToDeserializeStrongType = jsonObject["GuvenlikNoktaArray"]["GuvenlikNoktası"].ToString();
            List<GuvenlikNoktası> result = JsonConvert.DeserializeObject<List<GuvenlikNoktası>>(jsonToDeserializeStrongType); ;
        }
    }

    public partial class GuvenlikNoktası
    {
        public GuvenlikNoktası()
        {
            this.GüvenlikNoktasıOlay = new HashSet<GüvenlikNoktasıOlay>();
            this.PanikButonuAlarmlari = new HashSet<PanikButonuAlarmlari>();
        }

        public int Id { get; set; }
        public string GuvenlikNoktası1 { get; set; }
        public string KartNo { get; set; }
        public string Sira { get; set; }

        public virtual ICollection<GüvenlikNoktasıOlay> GüvenlikNoktasıOlay { get; set; }
        public virtual ICollection<PanikButonuAlarmlari> PanikButonuAlarmlari { get; set; }
    }

    public class GüvenlikNoktasıOlay
    {

    }

    public class PanikButonuAlarmlari
    {

    }
}

希望这有帮助

答案 1 :(得分:1)

您的JSON数据和类定义不适合。因此,默认值(NULL)由序列化程序提供。

为了反序列化给定的JSON数据,您需要一个类结构,如:

public class Root
{
     public LevelOne GuvenlikNoktaArray {get; set;}
}

public class LevelOne {
    public IEnumerable<GuvenlikNoktası> GuvenlikNoktası {get; set;}
}

答案 2 :(得分:0)

您可以使用此课程。

public class GuvenlikNoktası
{
    public int Id { get; set; }
    public string GuvenlikNoktası1 { get; set; }
    public string KartNo { get; set; }
    public int Sira { get; set; }
}

public class GuvenlikNoktaArray
{
    public IList<GuvenlikNoktası> GuvenlikNoktası { get; set; }
}

public class Example
{
    public GuvenlikNoktaArray GuvenlikNoktaArray { get; set; }
}

您可以使用此链接供您参考http://jsonutils.com/