【发布时间】:2016-10-09 17:21:20
【问题描述】:
我有以下代码将数据表转换为 JSON 字符串,我从 WCF 服务获取的 JSON 如下所示;
[{"id":"7c6c2d6b-416c-4535-95ba-b49a9f0c008b","title":"hello","description":"world","complete":true,"DependsOnTask":"63d47a78-ba4d-4740-9f61-9247dd9d5e82","id1":"63d47a78-ba4d-4740-9f61-9247dd9d5e82","title1":"another","description1":"example","complete1":false,"DependsOnTask1":null}]
转换代码如下所示;
string json = JsonConvert.SerializeObject(dt,Formatting.Indented);
string cleanjson = json.Replace("\"", "");
return json;
问题是我无法在接收该响应的客户端上正确反序列化 JSON,因为 JSON 中有额外的双引号,并且我无法使用 string.replace 删除它们。
还有其他方法可以做到这一点吗?
提前致谢:)
*********更新*********
这是我在客户端使用的代码
private void LoadTasks()
{
// get the todo list items
ToDoService.ToDoServiceClient client = new ToDoService.ToDoServiceClient();
try
{
//List<ToDoService.ToDoItemContract> toDoItems = client.GetToDoItems("").ToList();
//List<string> ItemsWithDependantTasks = new List<string>();
var Items= client.GetAllDependantTasks();
List<string> list = JsonConvert.DeserializeObject<List<string>>(Items);
dlTasks.DataSource = list;
dlTasks.DataBind();
client.Close();
}
catch (Exception ex)
{
// TODO: Log error
client.Abort();
}
}
【问题讨论】:
-
你的json字符串没问题...
-
似乎是数据数组的内容显示为重复编号的属性。你为什么这样做?这是 2 条记录吗?
-
顺便说一句,
"\"是由 Visual Studio 和调试器显示的,它实际上不是数据的一部分,所以你不需要替换它。 -
是的,这些是单独的记录,这正是 json.net 自动对重复记录执行的操作,但这些记录中的信息不同
-
向我们展示确切
client.GetAllDependantTasks()返回的内容 - 不是调试器的转义视图(提示:使用文本可视化工具复制数据)。