将Json序列化对象设置为会话。无法从视图解析

时间:2018-07-09 08:06:13

标签: c# json

只要是简短代码,我就可以解释我的问题。

这是我的C#代码:

List<MaZone> ListZoneValues = new List<MaZone>();

ListZoneValues.Add(new MaZone()
                            {
                                ZoneIc = int.Parse(DataReader["ZoneIC"].ToString()),
                                ZoneName = DataReader["ZoneName"].ToString()
                            });

HttpContext.Session.SetString("ZoneDetails",JsonConvert.SerializeObject(ListZoneValues));

这是我的JavaScript代码。

var ZoneDetailsVB = '@HttpContextAccessor.HttpContext.Session.GetString("ZoneDetails")';

JSON.parse(ZoneDetailsVB);

但是错误是在解析Json时出现的。 错误是:

Uncaught SyntaxError: Unexpected token & in JSON at position 2
    at JSON.parse (<anonymous>)

Json字符串已接收:

[{"ZoneIc":1,"ZoneName":"Zone1"},{"ZoneIc":2,"ZoneName":"Zone1 & 2"},{"ZoneIc":3,"ZoneName":"Zone2"},{"ZoneIc":4,"ZoneName":"Zone4"},{"ZoneIc":5,"ZoneName":"Zone5"},{"ZoneIc":6,"ZoneName":"Zone 6"},{"ZoneIc":7,"ZoneName":"Zone Num 7"}]

谢谢。

2 个答案:

答案 0 :(得分:0)

如果您使用的是jQuery,则可以执行以下操作

function htmlDecode(value) {
        return $("<textarea/>").html(value).text();
}

var ZoneDetailsVB = '@HttpContextAccessor.HttpContext.Session.GetString("ZoneDetails")';    
JSON.parse(htmlDecode(ZoneDetailsVB));

您还可以使用 he https://github.com/mathiasbynens/he

第三种解决方法是使用

  

Html.Raw

var ZoneDetailsVB = '@(Html.Raw(HttpContextAccessor.HttpContext.Session.GetString("ZoneDetails").ToString()))'

答案 1 :(得分:-1)

我相信您没有获得正确的JSON输出,您可以转储原始数据并测试您的JSON是否正确,也可以使用一些在线工具,例如:

http://www.mycodemyway.com/beautifiers/json-parser