简体   繁体   English

如何在asp.net中反序列化json

[英]how to deserialize json in asp.net

I have follow code which request from web 我遵循了来自网络的请求代码

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('"');
}

After the run this code i will get this type of json 运行此代码后,我将得到这种类型的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" }
]

Now i want deserialize this in asp.net(c#) 现在我想在asp.net中反序列化(c#)
I tried to get a proper answer but didn't get. 我试图得到一个正确的答案,但没有得到。

Please advice. 请指教。

Create a class called FromFlix inseide App_Code like this 像这样创建一个名为FromFlix的类的App_Code

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

Now after the end of your while loop, do this. 现在,在while循环结束后,执行此操作。

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

The response is a List<FromFlix> , that is, a generic list of type FromFlix responseList<FromFlix> ,即FromFlix类型的通用列表
This is how you should use it. 这就是你应该如何使用它。

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/>");
}

Hope this helps. 希望这可以帮助。

You can use the JavaScriptSerializer type to serialize and deserialize JSON data. 您可以使用JavaScriptSerializer类型来序列化和反序列化JSON数据。

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

EDIT: 编辑:

I'm not sure of what problems you're having with this, but the following is a working example with the JSON string you provide: 我不确定你对此有什么问题,但以下是你提供的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);

This leaves us with deserialized being an List<TheType> with 14 elements. 这使我们deserialized List<TheType>具有14个元素的List<TheType>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM