首页 > 解决方案 > 如何使用 json-query 更改匹配属性的值?

问题描述

我使用json-query因为它可以让我通过 JSON 对象内的路径查找。

找到它后,我想用新值替换该值,并且我希望它会影响字符串,但事实并非如此。

有没有办法使用 json-query 来做到这一点?或从对象再次重建此 JSON,但我在文档中找不到方法。

const jsonQuery = require("json-query");

var data = {
  people: [
    { name: "Matt", country: "NZ" },
    { name: "Pete", country: "AU" },
    { name: "Mikey", country: "NZ" }
  ]
};

const b = jsonQuery("people[country=NZ].name", {
  data: data
});

console.log({ b });

b.value = "bla";

console.log({ b }); // value === 'bla'

console.log({ data }); // value === 'Matt'

码沙盒.io

标签: javascript

解决方案


您可以修改reference查询返回的子属性中的条目:

const b = jsonQuery("people[country=NZ].name", {
  data: data
});

b.references[0].name = 'bla';

请参阅概念验证示例:https ://codesandbox.io/s/wonderful-kirch-g7zy2


推荐阅读