2015-09-05 144 views
1

我只是無法獲取json中嵌入對象的鍵和值。 我想獲得這些密鑰和值,如{ user: 'admin', msg: 'exit' }。 使用此代碼我得到item.Key(即該json中的id)和item.Value(System.Collections.Generic.Dictionary`2 [System.String,System.Object]) 但我只是不知道什麼與這個對象有關。如何從中獲取數據? 我從服務器得到json -使用.NET Framework 3.5解析JSON。無法從對象獲取數據

{ 
    "365": { 
     "user": "admin", 
     "msg": "exit" 
    }, 
    "366": { 
     "user": "user", 
     "msg": "enter" 
    }, 
    "370": { 
     "user": "user", 
     "msg": "exit" 
    }, 
    "372": { 
     "user": "user", 
     "msg": "exit" 
    }, 
    "373": { 
     "user": "admin", 
     "msg": "exit" 
    } 
} 

謝謝你的回答。

P.S. 我不想使用任何外部庫。

using System; 
using System.Collections; 
using System.Collections.Generic; 
using System.Net; 
using System.Web.Script.Serialization; 

namespace JSONTestconsole 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      WebClient wc = new WebClient(); 
      wc.Proxy = null; 
      string data = wc.DownloadString("http://temp.net"); 

      JavaScriptSerializer ser = new JavaScriptSerializer(); 
      var obj = ser.DeserializeObject(data) as ICollection; 
      foreach (KeyValuePair<string, object> item in obj) 
      { 
       var id = item.Key; 
       Console.WriteLine(id); 
       Console.WriteLine(item.Value); 
      } 

      Console.ReadLine(); 
     } 
    } 
} 
+0

這是無效的json – Plutonix

+0

已修復,但仍不知道如何處理item.Value對象 – SLI

回答

1

您正在反序列化爲Object哪些不會公開值屬性。 JSON代表serializied對象,所以最好是反序列化到相同類型:

public class UserMsg 
{ 
    public string user { get; set; } 
    public string msg { get; set; } 
} 

要使用它作爲價值目標類型:

string jstr = ...from whereever 
JavaScriptSerializer jss = new JavaScriptSerializer(); 
Dictionary<string, UserMsg> myCol = jss.Deserialize<Dictionary<string, UserMsg>>(jstr); 

// test result: 
foreach (KeyValuePair<string, UserMsg> kvp in myCol) 
{ 
    Console.WriteLine("Key: {0}", kvp.Key); 
    Console.WriteLine(" Value: {0}, {1}", kvp.Value.user, kvp.Value.msg); 
} 

輸出:

重點: 365
Value:admin,exit
Key:366
Value:user,enter
(等)

VS將幫助建立類:把有效的json放在剪貼板上;然後
編輯菜單 - >選擇性粘貼 - >將Json粘貼爲類

你可能需要調整一些東西。我認爲這是VS2010添加了這個功能的地方。