使用System解析带有多语言文本的JSON.网状物剧本序列化或系统.Web.*库



我以前问过这个问题。使用Newtonsoft的解决方案非常有效,直到我将网站部署在网络托管服务器上,这让我做噩梦。因此,我计划使用一些System.Web库,这样我就不必处理*.dlls之类的问题,而且我可以轻松地部署我的网站。

有人能帮我使用System.Web.Script.Serialization或任何System library解析相同的json输出吗?非常感谢。

我希望您真正的json字符串是有效的,因为您发布的字符串已损坏,但却是json。Net可以容忍。

唯一的技巧是反序列化为这种有趣的类型List<Dictionary<string,object>>

以下是一个带有更正json(删除尾随,s)的示例

string json = @"[ { ""ew"" : ""bharat"", ""hws"" : [ ""u092Du093Eu0930u0924"",""u092Du0930u0924"",""u092Du0930u093Eu0924"",""u092Du093Eu0930u093Eu0924"",""u092Cu0939u0930u0924"" ] }, { ""ew"" : ""india"", ""hws"" : [ ""u0907u0902u0921u093Fu092Fu093E"",""u0907u0928u094Du0921u093Fu092Fu093E"",""u0907u0923u094Du0921u093Fu092Fu093E"",""u0908u0928u094Du0921u093Fu092Fu093E"",""u0907u0928u0921u093Fu092Fu093E"" ] } ]";
var list = new JavaScriptSerializer().Deserialize<List<Dictionary<string,object>>>(json);
foreach (var dict in list)
{
    var ew  = (string)dict["ew"];
    var firstValOfHws = ((ArrayList)dict["hws"])[0];
}

--编辑--

好的,这应该可以

var serializer = new DataContractJsonSerializer(typeof(List<Result>));
var result = (List<Result>)serializer.ReadObject(new MemoryStream(Encoding.UTF8.GetBytes(json)));
public class Result
{
    public string ew;
    public List<string> hws;
}

最新更新