【发布时间】:2013-12-20 12:39:04
【问题描述】:
我正在使用 JSON.NET 库将 C# 列表转换为 JSON。在我查看快速手表时转换对象后,我可以看到每个属性都有额外的“\”。我通过控制器(asp.net MVC 控制器)将此数据发送到 JavaScript 客户端之一。发送数据时,数据有额外的“\”。如何删除这些额外的“\”?
我的控制器:
public class MyController : myBase
{
public string Get(string id = null, string userName = null)
{
List<Data> dataList = new List<Data>();
Data d = new Data();
d.Name = "FireFox";
d.Folder = @"Testing\Mac OSX";
dataList.Add(d);
d = new Data();
d.Name = "Safari";
d.Folder = @"Testing\Mac OSX";
dataList.Add(d);
d = new Data();
d.Name = "Chrome";
d.Folder = @"Testing\Mac OSX";
dataList.Add(d);
d = new Data();
d.Name = "FireFox";
d.Folder = @"Testing\Windows";
dataList.Add(d);
d = new Data();
d.Name = "Safari";
d.Folder = @"Testing\Windows";
dataList.Add(d);
d = new Data();
d.Name = "Chrome";
d.Folder = @"Testing\Windows";
dataList.Add(d);
d = new Data();
d.Name = "Internet Exploder";
d.Folder = @"Testing\Windows";
dataList.Add(d);
d = new Data();
d.Name = "Chrome";
d.Folder = @"Testing\Linux";
dataList.Add(d);
d = new Data();
d.Name = "Firefox";
d.Folder = @"Testing\Linux";
dataList.Add(d);
d = new Data();
d.Name = "Testing First Child";
d.Folder = @"Testing";
dataList.Add(d);
d = new Data();
d.Name = "First Child";
d.Folder = null;
dataList.Add(d);
Node root = new Node();
foreach (Data da in dataList)
{
Node parent = root;
if (!string.IsNullOrEmpty(da.Folder))
{
Node child = null;
foreach (string part in da.Folder.Split(new char[] {'\\'}, StringSplitOptions.RemoveEmptyEntries))
{
string name = part.Trim();
child = parent.children.Find(n => n.Name == name);
if (child == null)
{
child = new Node {Name = name};
parent.children.Add(child);
}
parent = child;
}
}
//Always adds the leaf node.
parent.children.Add(new Node {Name = da.Name});
}
string output = JsonConvert.SerializeObject(root);
return output;
}
}
public class Data
{
public string Name { get; set; }
public string Folder { get; set; }
}
class Node
{
public Node()
{
children = new List<Node>();
}
public List<Node> children { get; set; }
public string Name { get; set; }
public bool leaf { get; set; }
public bool expanded { get; set; }
}
firefox 中的数据 --- 其他控制器返回的数据没有 '\'
额外的'\'
如何删除这些“\”?
【问题讨论】:
-
您可以粘贴您的控制器代码以便我们查看您在做什么吗?
-
这是来自 QuickWatch 的神器。了解你的工具,不要解决不存在的问题。
-
@HenkHolterman:我知道当我们在快速观看中看到数据时,额外的“\”是为了显示目的。但即使是通过发送到客户端的输出也包含“\”。当我查看已序列化为 json 的其他对象时,它们没有额外的 '\'
-
@ChrisW:添加代码
-
JS 代码是做什么用的?我仍然不相信这里存在实际问题。如果它反序列化,那么一切都很好。