c# - 将 JSON 对象转换为 C# 对象

标签 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”内的所有属性均为空。它看起来像一个空对象。如何获得正确的“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
    {

    }
}

希望对你有帮助

关于c# - 将 JSON 对象转换为 C# 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39847703/

相关文章:

c# - 使用 iTextSharp 将带有 CSS 的 HTML 转换为 PDF

python - 将 json 字符串转换为 python 对象

json - 如何将由 String 和 Seq[String] 值组成的 Scala Map 转换为 JSON?

javascript - 在 Javascript 中使用 try-catch-finally block 捕获 JSON 解析异常不起作用

javascript - AngularJS:从 php 脚本获取 JSON

c# - 如何通过WebBrowser控件C#避免下载json文件

c# - 修改 WordprocessingDocument 不会保存更改

c# - yield 关键字的奇迹

c# Combobox 显示 System.Data.Datarowview 因为点

c# - XML 命名空间 'ViewModelLocator' 中的未知类型 'clr-namespace:namespaceblabla;assembly=blabla'