1

从 .NET 程序集(非 Web 应用程序).​​..

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" 
}
4

1 回答 1

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/"] );
于 2010-03-02T19:38:37.127 回答