【问题标题】:How can I escape double quotes in my JSON responses?如何在我的 JSON 响应中转义双引号?
【发布时间】: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() 返回的内容 - 不是调试器的转义视图(提示:使用文本可视化工具复制数据)。

标签: c# json wcf


【解决方案1】:

没有多余的引号,JSON 数据是有效的(例如,您可以通过将 JSON 数据粘贴到 https://jsonformatter.curiousconcept.com/ 来验证自己)。

但是,您希望 JSON.NET 如何将其反序列化为纯字符串列表?这需要反序列化为某个字典、JObject 或具有匹配属性的实体。

【讨论】:

  • 所以与其将其反序列化为纯字符串列表,不如将其反序列化为字典?
  • @ReeceCottam 这真的取决于你之后要如何处理数据。关键是您的 JSON 数据包含一个具有属性的对象数组,而不是普通字符串,因此尝试反序列化为字符串没有意义并且必须失败。
猜你喜欢
  • 2013-03-16
  • 1970-01-01
  • 2017-01-14
  • 1970-01-01
  • 1970-01-01
  • 2011-04-19
相关资源
最近更新 更多