2016-10-04 3 views
1

json 개체가 있고 그것을 내 C# 개체로 변환하려고합니다.JSON 개체를 C# 개체로 변환

{"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; } 
} 

그리고 마지막으로, 내 변환 시도 : 여기 내 JSON이다 내가 디버그하는 경우

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

내가 오류를 얻을 수 있지만하지 않는이, 'result'내부의 모든 속성이 null 인 것을 볼 수 있습니다. 그것은 빈 객체처럼 보인다. 올바른 'GuvenlikNoktası'객체를 얻으려면 어떻게해야합니까? (Btw 나는 꽤 json 객체를 올바르게 얻고있다).

+1

우선 JSON 배열에서 'Sira' 속성은 문자열로 정의됩니다. 정수입니다. – ThePerplexedOne

+1

json을 C#과 함께 사용하기위한 더 많은 가이드 : http://www.newtonsoft.com/json –

+0

둘째, 비 직렬화 할 때, JSON을 당신의'GuvenlikNoktası' 클래스의 단일 인스턴스로 deserialize하는 것 같습니다. JSON 자체는 해당 클래스의 배열입니다. – ThePerplexedOne

답변

1

당신의 deserizlize 할 대상 개체. 아래 코드를 사용해 보시기 바랍니다.

추신 :이 코드는 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

JSON 데이터와 클래스 정의가 서로 맞지 않습니다. 따라서 디폴트 값 (NULL)은 시리얼 라이저에 의해 제공됩니다. 당신은 같은 클래스 구조가 필요 주어진 JSON 데이터 직렬화하기 위해

: 당신은 당신이 도달 할 때까지 당신의 JSON 속성 내에서 이동하는 jobject를 사용할 수있는 그대로 당신이 JSON 구조를 유지해야하는 경우

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

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

예, rboe가 정확합니다. 구조체가 어떻게 보이는지 보려면'https : // jsonformatter.curiousconcept.com /'을 사용하고,이'http : // json2csharp.com /'을 사용하면 구문 분석 할 구조를 볼 수 있습니다. –

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/이 링크를 사용할 수 있습니다.

관련 문제