2010-03-02 59 views
1

從.NET組件(非網絡應用程序)從Bit.ly解析JSON結果...幫助在.NET

從Bit.ly正常響應是在一定程度上的下面的表格。推薦使用這種結果的方式是什麼,以便我可以輕鬆獲得shortUrl字段的值?由於原始URL作爲「關鍵字」返回,因此構建一個模型類以將其反序列化並使用LINQ似乎沒有意義。在Javascript中,一個簡單的.eval可以工作,但是.NET中推薦的方法是什麼,因爲該模型是動態的?

{ 
    "errorCode": 0, 
    "errorMessage": "", 
    "results": 
    { 
     "http://www.google.com/": 
     { 
      "hash": "xxxxxx", 
      "shortKeywordUrl": "", 
      "shortUrl": "http://bit.ly/xxxxx", 
      "userHash": "1F5ewS" 
     } 
    }, 
    "statusCode": "OK" 
} 

回答

1

.NET提供了一種類似於eval的機制(JavaScriptSerializer)。如果你只需要解析出幾個數值的代碼是這樣的:

var serializer = new JavaScriptSerializer(); 
var values = serializer.Deserialize<IDictionary<string,object>>(jsonData); 
var results = values["results"] as IDictionary<string,object>; 
var google = results["http://www.google.com/"] as IDictionary<string,object>; 
var shortUrl = results[ "shortUrl" ]; 

如果您要訪問的其他數據,你可以創建自己的DTO,並有串映射JSON數據到。

public class Bitly 
{ 
    public string hash{ get; set; } 
    public string shortKeywordUrl{ get; set; } 
    public string shortUrl{ get; set; } 
    public string userHash{ get; set; } 
} 

var google = serializer.ConvertToType<Bitly>(results["http://www.google.com/"]);