Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用JavaScriptSerializer ASP.NET反序列化JSON片段_C#_Asp.net_Json - Fatal编程技术网

C# 使用JavaScriptSerializer ASP.NET反序列化JSON片段

C# 使用JavaScriptSerializer ASP.NET反序列化JSON片段,c#,asp.net,json,C#,Asp.net,Json,是否可以使用反序列化一段JSON?我不需要JSON中的所有数据,只需要一个部分 JSON数据如下所示: // **** snip **** { "response": { some data } }, "forecast": { "txt_forecast": { "date": "7:00 AM PST", "forecastday": [ // <-- section needed {

是否可以使用反序列化一段JSON?我不需要JSON中的所有数据,只需要一个部分

JSON数据如下所示:

// **** snip ****
{
    "response":  {
        some data
    }
},
"forecast":  {
    "txt_forecast":  {
    "date": "7:00 AM PST",
    "forecastday":  [ // <-- section needed
        {
            some data....
        },
        .........
        {
            some data....
        }
    ]
},
"simpleforecast":  {
    "forecastday":  [
        more data
    ]
}
// **** snip ****

像这样的东西对你有用吗

var dictObj = new JavaScriptSerializer().Deserialize<Dictionary<string, object>>(jsonData);
var jsonNew = new JavaScriptSerializer().Serialize(dictObj["forcast"]);
var dictObj=newJavaScriptSerializer()。反序列化(jsonData);
var jsonNew=new JavaScriptSerializer().Serialize(dictObj[“forcast”]);

如果您需要验证JSON是否有效,请使用此链接确认JSON是否有效,因为您不想构建所表示的整个对象,您很可能需要解析字符串以仅获取所需的部分。一旦拥有了节本身,
将其反序列化为对象
JavaScriptSerializer
不包含任何只解析特定节的方法。@DJKRAZE JSON有效,它是weatherunderground api。@Jesse,所以我只需要剪切需要的部分,并将其反序列化
Skomi,如果正确,请尝试我提供的解决方案,这将为您提供
forcast:
可用的数据。我刚刚在三个“级别”(forecast->txt\U forecast->forecastday)中实现了三次这个片段。这会减慢我的应用程序吗?这是你必须测试的东西。。JSON重量很轻,不应该增加太多额外的开销来降低速度。我认为它应该会加快速度。很高兴我能为您提供一个快速有效的解决方案。。
var jsonData = new WebClient().DownloadString(url);
JavaScriptSerializer ser = new JavaScriptSerializer();
forecast_class forecast = ser.Deserialize<forecast_class>(jsonData);
var dictObj = new JavaScriptSerializer().Deserialize<Dictionary<string, object>>(jsonData);
var jsonNew = new JavaScriptSerializer().Serialize(dictObj["forcast"]);