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