2011-08-26 59 views
7

我跟随代码从网络如何反序列化JSON在asp.net

StringBuilder sb = new StringBuilder(); 
byte[] buf = new byte[8192]; 
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://api.bigflix.com/BIGFlixApi.do?parameter=getProductType&partnerID=17&uniqueID=54325345435&timestamp=131286916367&digest=bf53cae8f364cfc1d796489d09e4cfd&nbsp&nbsp<br>"); 
HttpWebResponse responce = (HttpWebResponse)request.GetResponse(); 
Stream resstream = responce.GetResponseStream(); 
string tempString = null; 
int count = 0; 
do 
{ 
    count = resstream.Read(buf, 0, buf.Length); 
    if (count != 0) 
    { 
     tempString = Encoding.ASCII.GetString(buf, 0, count); 
     sb.Append(tempString); 
    } 
} 
while (count > 0); 
{ 
    Response.Write(sb.ToString() + "<br/><br/>"); 
    // string[] val = sb.ToString().Split('"'); 
} 

要求运行此代码后,我会得到这个类型的JSON

[ 
    { "id": 23, "name": "Video Clips" }, 
    { "id": 15, "name": "Deleted Scenes" }, 
    { "id": 9, "name": "Music Albums" }, 
    { "id": 7, "name": "Trailers" }, 
    { "id": 18, "name": "Short Films" }, 
    { "id": 21, "name": "Movie Clips" }, 
    { "id": 1, "name": "Movies " }, 
    { "id": 4, "name": "Plays" }, 
    { "id": 22, "name": "Scenes" }, 
    { "id": 2, "name": "TV Show" }, 
    { "id": 5, "name": "Kids" }, 
    { "id": 16, "name": "Interviews" }, 
    { "id": 11, "name": "Film Songs" }, 
    { "id": 14, "name": "Making of Movie" } 
] 

现在我想这反序列化在asp.net(c#)
我试图得到一个正确的答案,但没有得到。

请指教。

回答

10

while循环结束后这样

public class FromFlix 
{ 
    public string ID { get; set; } 
    public string Name { get; set; } 
} 

创建一个名为FromFlix inseide App_Code文件类现在,做到这一点。

JavaScriptSerializer ser = new JavaScriptSerializer(); 
var response = ser.Deserialize<IList<FromFlix>>(sb.ToString()); 

responseList<FromFlix>,就是类型FromFlix
的泛型列表这是你应该如何使用它。

StringBuilder sb = new StringBuilder(); 
byte[] buf = new byte[8192]; 
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://api.bigflix.com/BIGFlixApi.do?parameter=getProductType&partnerID=17&uniqueID=54325345435&timestamp=131286916367&digest=bf53cae8f364cfc1d796489d09e4cfd&nbsp&nbsp<br>"); 
HttpWebResponse responce = (HttpWebResponse)request.GetResponse(); 
Stream resstream = responce.GetResponseStream(); 
string tempString = null; 
int count = 0; 
do 
{ 
    count = resstream.Read(buf, 0, buf.Length); 
    if (count != 0) 
    { 
     tempString = Encoding.ASCII.GetString(buf, 0, count); 
     sb.Append(tempString); 
    } 
} 
while (count > 0); 
JavaScriptSerializer ser = new JavaScriptSerializer(); 
List<FromFlix> response = ser.Deserialize<List<FromFlix>>(sb.ToString()); 
foreach (var item in response) 
{ 
    Response.Write("ID: " + item.ID + "&" + "Name: " + item.Name + "<br/>"); 
} 

希望这会有所帮助。

+0

先生这是给错误错误不能隐式转换类型'System.Collections.Generic .IList '到'string' – Atul

+0

你在这行后做了什么?在此之后我写回应 – naveen

+0

。写(性反应); – Atul

2

你需要的是JSON.NET检查此链接了http://json.codeplex.com/会让你的生活容易得多

+2

erm为什么这是-1? – Bobby

+0

+1,因为它被低估。 @downvoter:点击开心? – naveen

+0

Thanks Naveen = o) – Bobby

4

可以使用JavaScriptSerializer类型序列化和反序列化JSON数据。

var serializer = new JavaScriptSerializer(); 
var deserialized = serializer.Deserialize<TheTypeToWhichJSONWillMap>(myJson); 

编辑:

我不知道的你与这个有什么问题,但下面是JSON字符串的工作示例您提供:

static string TheJson = "..."; 

public class TheType 
{ 
    public int id { get; set;} 
    public string name { get; set; } 
} 

var serializer = new JavaScriptSerializer(); 
var deserialized = serializer.Deserialize<List<TheType>>(TheJson); 

这留给我们deserialized是一个List<TheType>与14个元素。

+0

先生我试试这个,但不工作... – Atul

+0

@Atul,**如何**它不工作? –

+0

@ Moo果汁,先生,这不是工作 – Atul