开发者

Asp.Net Mvc Consume Url posting json data

开发者 https://www.devze.com 2023-01-24 10:39 出处:网络
I was wondering if anyone had any pointers for parsing json data consumed from a URL in Asp.Net.I\'ve found plenty of docs about Model Binding json datatypes but this is coming from a URL and I cant s

I was wondering if anyone had any pointers for parsing json data consumed from a URL in Asp.Net. I've found plenty of docs about Model Binding json datatypes but this is coming from a URL and I cant seem to find an example for that. The closest thi开发者_StackOverflowng I've found is datacontractjsonserializer but again, I cant seem to find an example of that in context with a URL outputting the json data. Any help is appreciated.


You could use the JavaScriptSerializer class. You start by defining a model class which will hold the data. So let's suppose that the remote URL returns the following JSON:

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

which could be represented by this model:

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

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

And then deserialize the received JSON back to the model:

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:

In order to fetch the JSON from remote url you could use WebClient:

using (var client = new WebClient())
{
    string json = client.DownloadString("http://someurl.com");
}


Here is what I have so far. A product of all answers that I get here in stack. The idea is to get the json value from external web service and publish it in my controller as a json values and I dont have to create model for it. Hope this helps.

public class ApiJson: Controller {

    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);


    }




}
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号