【问题标题】:ERROR: Parsing Cookie Using Json.net错误:使用 Json.net 解析 Cookie
【发布时间】:2014-03-27 17:23:12
【问题描述】:

解析在 asp.net 中使用 jquery 创建的 cookie 时出现错误。它在第 3 行抛出错误: 解析值时遇到意外字符:%。路径'',第 0 行,第 0 位置。

HttpCookie MyCookie = Request.Cookies["cart"];
Response.Write(MyCookie.Value.ToString());            
var myobjects = JsonConvert.DeserializeObject<CookieCart>(MyCookie.Value.ToString());

示例 Cookie 值:

[
  {
    "id": 1,
    "thumbnail": "/cocosamples/images/cocopeat/branded/430041-0014_1_t.jpg",
    "title": "cocopeat",
    "url": "product.html",
    "price": "$ 250.00",
    "qty": 3
  }
]

CookieCart 类

public int ID { get; set; }
public string Thumbnail { get; set; }
public string Title { get; set; }
public string Url { get; set; }
public string Price { get; set; }
public int Qty { get; set; }

MyCookie 值:

%5B%7B%22id%22%3A1%2C%22thumbnail%22%3A%22http%3A%2F%2Flocalhost%3A52781%2FASVOnline%2Ftheme%2Fimages%2Fwomen%2Fskirt%2F430041-0014_1_t.jpg%22% 2C%22title%22%3A%22Inceptos%20orci%20hac%20libero%22%2C%22url%22%3A%22product.html%22%2C%22price%22%3A%22%24%20250.00%22%2C% 22qty%22%3A10%7D%5D

饼干购物车

【问题讨论】:

  • 你的班级CookieCart怎么样?
  • 当我尝试使用 JavaScriptSerializer 读取相同的 cookie 值时出现错误 Invalid JSON primitive: .
  • 你需要Server.UrlDecode

标签: jquery asp.net cookies json.net


【解决方案1】:

您的 cookie 值已编码。使用Server.UrlDecode。此外,您的 JSON 返回多个 CookieCart 项目,因为它是一个具有 [] 的数组。您需要将您的对象反序列化为List&lt;CookieCart&gt;CookieCart[],例如:

var myobjects = JsonConvert.DeserializeObject<List<CookieCart>>
                             (Server.UrlDecode(MyCookie.Value.ToString()));

然后获取单个对象:

CookieCart singleItem = myobjects.FirstOrDefault();

【讨论】:

  • 现在我收到以下错误...无法将当前 JSON 数组(例如 [1,2,3])反序列化为类型“CookieCart”,因为该类型需要 JSON 对象(例如 {" name":"value"}) 以正确反序列化。要修复此错误,请将 JSON 更改为 JSON 对象(例如 {"name":"value"})或将反序列化类型更改为数组或实现集合接口的类型(例如 ICollection、IList),例如 List 可以从 JSON 数组反序列化。 JsonArrayAttribute 也可以添加到类型中以强制它从 JSON 数组中反序列化。路径'',第 1 行,位置 1。
  • 无法将当前 JSON 数组(例如 [1,2,3])反序列化为类型 'CookieCart',因为该类型需要 JSON 对象(例如 {"name":"value"})来反序列化正确。
  • @padmaCybonyx,在我的回答中修复了这个问题。你基本上得到了CookieCart 的集合。检查更新的代码。
  • 好收获...你救了我一天...从下午开始就一直在尝试使用各种方法。
猜你喜欢
  • 2014-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-28
  • 2014-11-24
  • 2013-11-18
  • 1970-01-01
  • 2014-03-05
相关资源
最近更新 更多