2016-02-28 190 views
0

我在將JSON反序列化爲對象時遇到問題。我讀了幾個答案,但他們都沒有幫助我。
這是我的JSON文件:將JSON反序列化爲.net對象

{ 
    "meta": { 
     "status": 200, 
     "msg": "OK" 
    }, 
    "response": { 
     "blog": { 
     "title": "title", 
     "name": "name", 
     "url": "url" 

     } 
    } 
} 

這是我的課:

public class TextInfo 
    { 
     public class Meta 
     { 
      public int status { get; set; } 
      public string msg { get; set; } 
     } 

     public class Blog 
     { 
      public string title { get; set; } 
      public string name { get; set; } 
      public string url { get; set; } 

     } 

     public class Response 
     { 
      public Blog blog { get; set; } 
     } 

     public class RootObject 
     { 
      public Meta meta { get; set; } 
      public Response response { get; set; } 
     } 
    } 

現在,我試圖反序列化,像這樣的JSON,但我不知道如何操作數據:

TextInfo txt = JsonConvert.DeserializeObject<TextInfo>(json); 

你能幫我弄清楚這個嗎?提前致謝。

+2

*但我不知道如何操縱數據*這是什麼意思? –

+0

例如,我想在一個數據庫中存儲博客名稱,我不知道如何從「txt」獲取該博客名稱 – Garnyatar

+0

您的意思是'textInfo.response.blog.name'?請注意,您應該使用.NET命名約定,您目前不是。屬性應該是PascalCase。 –

回答

0

三兩件事:

  1. 您可以提供錯誤消息/日誌,

  2. 你解析一個項目還是多個項目?在第二種情況:var txt = JsonConvert.DeserializeObject<List<TextInfo>>(JSONstr);

  3. 嘗試以下操作:

    public class Meta 
    { 
        public int status { get; set; } 
        public string msg { get; set; } 
    } 
    
    public class Response 
    { 
        public Blog blog { get; set; } 
    } 
    
    public class Blog 
    { 
        public string title { get; set; } 
        public string name { get; set; } 
        public string url { get; set; } 
    
    } 
    
    public class TextInfo 
    { 
        public Meta meta { get; set; } 
        public Response response { get; set; } 
    } 
    
+0

謝謝,這工作得很好。 – Garnyatar

0

唯一的區別是,TextInfo應該包含元和響應:

public class TextInfo 
{ 
    public Meta meta { get; set; } 
    public Response response { get; set; } 
} 

public class Meta 
{ 
    public int status { get; set; } 
    public string msg { get; set; } 
} 

public class Blog 
{ 
    public string title { get; set; } 
    public string name { get; set; } 
    public string url { get; set; } 
} 

public class Response 
{ 
    public Blog blog { get; set; } 
} 

你反序列化就像你說:

TextInfo txt = JsonConvert.DeserializeObject<TextInfo>(json); 
0

TextInfo類沒有任何屬性裏面反序列化。它只聲明另一個類。根據你的來源,你應該反序列化爲RootObject。這將返回一個具有metaresponse屬性的實例。 然後你會訪問他們:

RootObject obj = JsonConvert.DeserializeObject<RootObject>(json); 
Console.WriteLine(obj.meta.msg);