从Json字符串中删除属性名称

时间:2015-11-05 10:26:08

标签: javascript substring

嗨,假设我有一个JSON字符串,表示包含3列Id, Name, Status的网格中的记录。我目前正在编写一些JavaScript逻辑,您可以通过在文本框中键入一些文本来过滤数据行。过滤器将应用于所有列中的数据。因此,如果我键入“James”,则下面的记录1将返回如果我键入无记录1和2将被返回。问题是如果我键入Id,Name或Status不是数据而是属性名称,则始终返回所有记录。

Record 1
{
    Id: 1,
    Name: "James",
    Status: "None"
}

Record 2
{
    Id: 2,
    Name: "Paul",
    Status: "None"
}

如何修改JSON字符串以便

{ Id: 2, Name: "Paul", Status: "None"}

将成为

{ 2, "Paul", "None"}

1 个答案:

答案 0 :(得分:1)

你的问题有点不清楚(我担心Matthias'编辑使事情变得更糟)。

{ Id: 1, Name: "James", Status: "None" }不是有效的JSON字符串,但 是有效的Javascript对象。 JSON字符串的值必须在引号内。

如果您确实正在处理带有引用属性的JSON字符串,并且只是想要您要求的输出,那么您可以执行以下操作:

var person = '{ "Id": 1, "Name": "James", "Status": "None" }';
person = person.replace(/\s*"[^"]+"\s*:/g,"");
// > person = '{ 1, "James", "None" }'

如果您正在处理Javascript对象,获取没有属性名称的值的简单方法是执行以下操作:

var person = { Id: 1, Name: "James", Status: "None" };
person = Object.keys(person).map(function(k) { return person[k] }).join(',');
// > person = '1,James,None'

这两个选项都会为您提供一个字符串,您可以搜索您感兴趣的值。在后一种情况下,您需要添加一些格式以将结果转换为您拥有的值请求,但随后提出问题我假设演示文稿不是什么大问题。

但是,如果可能的话,我认为如果您修改搜索算法来检查值而不是整个对象,那么您的代码将更接近您的意图。但是,您还没有向我们展示进行搜索的任何代码,因此我现在无法为此添加建议。