将JSON对象转换为C#对象

将JSON对象转换为C#对象,c#,json,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,"Guvenlik

我有一个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#类:

公共部分类GuvenlikNoktası
{
公共场所
{
这是G.U.ViReNoktas·玉兰油=新的HasSeET();
this.panikbutonuarmlari=新HashSet();
}
公共int Id{get;set;}
公共字符串GuvenlikNoktası1{get;set;}
公共字符串KartNo{get;set;}
公共字符串Sira{get;set;}
公共虚拟收集GuViReNoktas·玉兰油{GET;set;}
公共虚拟ICollection panikbutonAlarmlari{get;set;}
}
最后,我的转换尝试:

public void AddIstasyon(string json_string)
{
    GuvenlikNoktası result = new JavaScriptSerializer().Deserialize<GuvenlikNoktası>(json_string);
}
public void AddIstasyon(字符串json\u字符串)
{
GuvenlikNoktasıresult=newJavaScriptSerializer()。反序列化(json_字符串);
}

我没有得到任何错误,但当我调试时,我看到“result”中的所有属性都为null。它看起来像一个空的物体。如何获得正确的“GuvenlikNoktası”对象?(顺便说一句,我确信我正确地获取了json对象)。

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

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

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

public class LevelOne {
    public IEnumerable<GuvenlikNoktası> GuvenlikNoktası {get; set;}
}
公共类根目录
{
公共级别1 GuvenlikNoktaArray{get;set;}
}
公共一级{
公共IEnumerable GuvenlikNoktası{get;set;}
}

如果必须保持此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
    {

    }
}
使用Newtonsoft.Json;
使用Newtonsoft.Json.Linq;
使用制度;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
名称空间SO39847703
{
班级计划
{
静态void Main(字符串[]参数)
{
3.3.1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1“,”卡特诺“:”000003417926233“,”西拉“:3},{”Id“:4,\”GuvenlikNoktası1\“:“GÜVENLIK\”,“KartNo\:“00000 1888909897\”,“Sira\”:4}]}”;
AddIstasyon(json);
}
公共静态void AddIstasyon(字符串json_字符串)
{
动态jsonObject=JObject.Parse(json_字符串);
字符串jsonToDeserializeStrongType=jsonObject[“GuvenlikNoktaArray”][“GuvenlikNoktası”]。ToString();
列表结果=JsonConvert.DeserializeObject(JSONDeserializeStrongType);
}
}
公共部分类GuvenlikNoktası
{
公共场所
{
这是G.U.ViReNoktas·玉兰油=新的HasSeET();
this.panikbutonuarmlari=新HashSet();
}
公共int Id{get;set;}
公共字符串GuvenlikNoktası1{get;set;}
公共字符串KartNo{get;set;}
公共字符串Sira{get;set;}
公共虚拟收集GuViReNoktas·玉兰油{GET;set;}
公共虚拟ICollection panikbutonAlarmlari{get;set;}
}
玉兰油集团的公众阶层
{
}
公共类Panikbutonulari
{
}
}

希望这有助于你使用这门课

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; }
}
公共类GuvenlikNoktası
{
公共int Id{get;set;}
公共字符串GuvenlikNoktası1{get;set;}
公共字符串KartNo{get;set;}
公共int Sira{get;set;}
}
公共类GuvenlikNoktaArray
{
公共IList GuvenlikNoktası{get;set;}
}
公开课范例
{
公共GuvenlikNoktaArray GuvenlikNoktaArray{get;set;}
}

您可以使用此链接作为参考。

首先,您的
Sira
属性在JSON数组中定义为字符串,它是一个整数。有关将JSON与C#结合使用的更多指南:其次,当您反序列化时,您似乎正在将JSON反序列化为
GuvenlikNoktası
类的单个实例,当JSON本身是所述类的数组时。您的JSON和类结构不匹配。另外,使用Newtonsoft.Json可以提供更高的性能。是的,rboe是正确的。使用此
https://jsonformatter.curiousconcept.com/
查看结构的外观,然后使用此
http://json2csharp.com/
因此,请查看需要解析的结构。
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; }
}