📌  相关文章
📜  将嵌套的 json 转换为查询字符串 - Javascript (1)

📅  最后修改于: 2023-12-03 15:09:36.060000             🧑  作者: Mango

将嵌套的 JSON 转换为查询字符串 - JavaScript

在 JavaScript 中,我们可以将 JSON 对象转换为查询字符串。在此过程中,我们将嵌套的对象转换为扁平的查询字符串。在本文中,我们将展示如何实现这种转换。

示例

下面是一个简单的嵌套 JSON 对象:

const obj = {
  name: 'John',
  age: 30,
  address: {
    street: '123 Main St',
    city: 'Anytown',
    country: 'USA'
  }
};

我们可以通过调用以下函数将其转换为查询字符串:

const toQueryString = (obj, prefix = null) =>
  Object.keys(obj).map(key => {
    const val = obj[key];
    const newKey = prefix ? `${prefix}[${key}]` : key;
    return typeof val === 'object' ?
      toQueryString(val, newKey) :
      `${encodeURIComponent(newKey)}=${encodeURIComponent(val)}`;
  }).join('&');

然后,我们可以调用此函数:

const queryString = toQueryString(obj);
console.log(queryString);
// Output: "name=John&age=30&address[street]=123%20Main%20St&address[city]=Anytown&address[country]=USA"
解释

在上面的示例中,我们定义了一个名为 toQueryString 的函数,它接收一个 JSON 对象和一个可选的前缀字符串作为参数。该函数使用 Object.keys 方法获取 JSON 对象的所有键,并使用 map 方法将它们转换为一组查询字符串参数。如果值是对象,我们递归调用 toQueryString 函数以继续转换。否则,我们将键和值编码为一个查询字符串参数。最后,我们将所有参数连接成一个查询字符串,其中使用 & 分隔符分隔每个参数。

结论

在本文中,我们展示了如何将嵌套的 JSON 对象转换为查询字符串。我们使用递归函数将嵌套的对象转换为扁平的字符串。这种技术在编写 REST API 或需要使用查询字符串进行参数传递的应用程序时非常有用。