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

标签 javascript substring

嗨,假设我有一个 JSON 字符串,它表示包含 3 列 Id、Name、Status 的网格中的记录。我目前正在编写一些 JavaScript 逻辑,您可以通过在文本框中键入一些文本来过滤数据行。过滤器将应用于所有列中的数据。因此,如果我输入“James”,将返回下面的记录 1,如果我输入 None,将返回记录 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"}

最佳答案

你的问题有点不清楚(我担心马蒂亚斯的编辑会让事情变得更糟)。

{ 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'

这两个选项都会为您提供一个字符串,您可以在其中搜索您感兴趣的值。在后一种情况下,您需要添加一些格式以将结果精确地转换为您所请求的内容,但是然后考虑到这个问题,我认为演示并不是什么大问题。

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

关于javascript - 从 Json 字符串中删除属性名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33542138/

相关文章:

javascript - obj.constructor 返回最顶层的构造函数而不是直接父构造函数

javascript - 需要使用 val() 将对象插入 firebase 数组

javascript - Node.js 获取字符串中所有出现的子字符串

mysql - 在 SQL 中使用子字符串的问题

string - 比较数组以找到所有匹配的子数组

javascript - 从 Jquery 动态更改 css 类属性?

javascript - 如何在 jQuery Mobile 中的按钮上添加渐变悬停

javascript - 尝试在按钮单击时获取随机数

java - MySQL 类似查询,用于在数据库表中搜索子字符串

java - 在 Java 中对单个字符进行子字符串化