Asp.Net Mvc потребляет URL-адрес, публикующий данные JSON - PullRequest
1 голос
/ 08 ноября 2010

Мне было интересно, есть ли у кого-нибудь указатели для разбора данных json, полученных с URL-адреса в Asp.Net.Я нашел много документов о типах привязки модели json, но это происходит из URL, и я не могу найти пример для этого.Самое близкое, что я нашел, это datacontractjsonserializer, но, опять же, я не могу найти пример этого в контексте с URL, выводящим данные json.Любая помощь приветствуется.

Ответы [ 2 ]

8 голосов
/ 08 ноября 2010

Вы можете использовать класс JavaScriptSerializer . Вы начинаете с определения класса модели, который будет содержать данные. Итак, давайте предположим, что удаленный URL возвращает следующий JSON:

{ name: 'John', addresses: [ { city: 'Paris' }, { city: 'London' } ] }

которая может быть представлена ​​этой моделью:

public class Person
{
    public string Name { get; set; }
    public Address[] Addresses { get; set; }
}

public class Address
{
    public string City { get; set; }
}

А затем десериализовать полученный JSON обратно в модель:

var serializer = new JavaScriptSerializer();
// TODO: Fetch the JSON from a remote URL
var json = "{name: 'foo', addresses: [{city: 'Paris'}, {city: 'London'}]}";
var person = serializer.Deserialize<Person>(json);

UPDATE:

Чтобы извлечь JSON из удаленного URL, вы можете использовать WebClient :

using (var client = new WebClient())
{
    string json = client.DownloadString("http://someurl.com");
}
1 голос
/ 20 марта 2013

Вот что у меня так далеко. Продукт всех ответов, которые я получаю здесь, в стеке. Идея состоит в том, чтобы получить значение json из внешнего веб-сервиса и опубликовать его в моем контроллере как значения json, и мне не нужно создавать модель для него. Надеюсь, это поможет.

публичный класс ApiJson: контроллер {

    public JsonResult getUser()
    {

        WebClient client = WebClient();
        NameValueCollection data = new NameValueCollection();
        data.Add("param1", "value1");    

        byte[] result = client.UploadValues("http://localhost:9000/", data);

        String json = Encoding.ASCII.GetString(result);
        JavaScriptSerializer serializer = new JavaScriptSerializer();
        dynamic item = serializer.Deserialize<object>(json);

        return Json(item, JsonRequestBehavior.AllowGet);


    }




}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...