2010-03-02 61 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/"]);