将JSON对象转换为C#对象
我有一个json对象,我正试图将其转换为我的c#对象。这是我的JSON:将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
{"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; }
}