2013-02-20 54 views
1

可能使用JavaScriptSerializer僅僅是JSON的一個片段Deserialize?我不需要來自JSON的所有數據,只是一個部分。使用JavaScriptSerializer反序列化JSON片段ASP.NET

的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 **** 

這是我需要解析部分:

"forecastday": [ // <-- section needed 
    { 
     some data.... 
    }, 
    ......... 
    { 
     some data.... 
    } 
] 

我試着用forecast對象(整個數據的片段),但它返回null。

var jsonData = new WebClient().DownloadString(url); 
JavaScriptSerializer ser = new JavaScriptSerializer(); 
forecast_class forecast = ser.Deserialize<forecast_class>(jsonData); 
+0

你確定的JSON是有效的,如果你需要驗證JSON是合法使用這個鏈接[JSONLint(HTTP:// jsonlint。 com /) – MethodMan 2013-02-20 20:24:03

+0

由於您不想構建* whole *對象,您很可能必須解析字符串才能獲取所需的部分。一旦你有了這個部分,'反序列化'成一個對象。 'JavaScriptSerializer'不包含任何方法來解析一個特定的部分。 – Jesse 2013-02-20 20:24:33

+0

@DJKRAZE JSON是有效的,它是weatherunderground api。 – skomi 2013-02-20 20:27:23

回答

2

威爾這樣的事情對你的工作

var dictObj = new JavaScriptSerializer().Deserialize<Dictionary<string, object>>(jsonData); 
var jsonNew = new JavaScriptSerializer().Serialize(dictObj["forcast"]); 
+0

它的工作原理。我剛剛爲三個「級別」(預測 - > txt_forecast - > forecastday)實施了這個片段三次。這會減慢我的應用程序? – skomi 2013-02-20 22:07:52

+1

這是你必須測試的東西.. JSON是非常輕的重量,不應該增加額外的額外開銷在減速方面它應該加快它實際上在我看來......很高興我可以爲您提供快速工作解.. – MethodMan 2013-02-20 22:12:15

相關問題