繁体   English   中英

将JSON对象转换为C#对象

[英]Convert JSON Object to C# Object

我有一个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对象)。

如果必须按原样保留此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
    {

    }
}

希望这可以帮助

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

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

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

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

你可以使用这个类。

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/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM