2010-11-08 94 views
1

我想知道是否有人有任何解析從Asp.Net中的URL使用的json數據的指針。我發現了很多關於Model Binding json數據類型的文檔,但是這是來自一個URL,我似乎找不到一個例子。我找到的最接近的是datacontractjsonserializer,但是,我似乎無法找到與輸出json數據的URL相關的示例。任何幫助表示讚賞。Asp.Net Mvc使用Url發佈json數據

+0

你是什麼意思 「URL輸出JSON數據」?這是您正在使用的外部API嗎?也許舉一個你做什麼的例子,以及返回的JSON? – RPM1984 2010-11-08 07:26:37

回答

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

更新:

爲了獲取來自遠程URL的JSON,你可以使用WebClient

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

鑑於http://someurl.com,獲取代碼的樣子是什麼樣的? – 2010-11-08 15:51:53

+0

@Justin,請參閱我的更新。 – 2010-11-08 15:55:32

+0

謝謝!很有幫助 – 2010-11-08 16:39:29

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


    } 




} 
相關問題