Asp.Net Mvc Consume Url发布json数据

时间:2010-11-08 00:59:06

标签: web-services json asp.net-mvc-2

我想知道是否有人有任何指针来解析从Asp.Net中的URL消耗的json数据。我发现了很多关于模型绑定json数据类型的文档,但这是来自一个URL,我似乎无法找到一个例子。我发现最接近的是datacontractjsonserializer但是,我似乎无法在输出json数据的URL的上下文中找到一个示例。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:8)

您可以使用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);

更新:

要从远程网址获取JSON,您可以使用WebClient

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

答案 1 :(得分:1)

这是我到目前为止所拥有的。我在堆栈中得到的所有答案的产物。 我的想法是从外部Web服务获取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);


    }




}