【发布时间】:2015-12-23 16:07:31
【问题描述】:
试图在两个模块之间传递这个对象:
public class Transaction
{
public string ID { get; set; }
public string ErrorMessage { get; set; }
public int ErrorCode { get; set; }
}
序列化:
transaction.ErrorMessage = "temptemptemp";
transaction.ErrorCode = 123;
transaction.ID = "0";
return Ok(JsonConvert.SerializeObject(transaction));
反序列化:
using (WebClient webClient = new WebClient())
{
string json = webClient.DownloadString(url);
Transaction transaction = JsonConvert.DeserializeObject<Transaction>(json);
}
在调试窗口中,我看到两个字符串是这样的:
- 序列化后 - {"ID":"0","ErrorMessage":"temptemptemp","ErrorCode":123}
- 反序列化之前 - "{\"ID\":\"0\",\"ErrorMessage\":\"temptemptemp\",\"ErrorCode\":123}"
所以我得到以下异常:
将值 "{"ID":"0","ErrorMessage":"temptemptemp","ErrorCode":123}" 转换为类型 'WebService.Transaction' 时出错。路径 '',第 1 行,位置 75。
【问题讨论】:
-
Ok()方法有什么作用? -
Ok()函数返回一个System.Web.Http.Results.OkNegotiatedContentResult -
那些斜杠只是转义字符,这不应该影响到 JSON 的转换
-
你确定是同一个 Transaction 类吗?
-
我建议将 async/await 与 webclient 一起使用,因为 Tasks
适用于非 cpu 密集型工作,并且有助于扩展您的应用程序。
标签: c# json json.net backslash json-deserialization