Помогите с анализом результата JSON из Bit.ly в .NET - PullRequest
1 голос
/ 02 марта 2010

Из сборки .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 Ответ

1 голос
/ 02 марта 2010

.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/"] );
...