将对象数组串行化为JSON

时间:2016-06-07 08:10:37

标签: javascript arrays json

我有一个名为users的Object数组。 此数组中的对象格式如下所示:

var userExample = {pub:{name:'John', id:'100'}, priv:{location:'NYC', phone:'000000'}};

作为一项宁静的服务,客户可以请求所有用户的信息。 显然我只想向他们发送公开信息。 所以我想通过键选择性地序列化我的数据(将忽略priv键)

这是我的代码段:

var users = [];
function censor(key, value) {
  if (key == priv) {
    return undefined;
  }
  return value;
}

app.get('/listUsers', function(req, res){
  res.end(JSON.stringify(users, censor));
});

运行这些代码时,发生错误:

  

ReferenceError:未定义priv

我是Javascript初学者,请帮助。

3 个答案:

答案 0 :(得分:1)

priv更改为"priv"

但你的做法很危险。在类似的条件下,我通常会创建一个要导出的新对象,并且我明确地复制了应该导出的属性,这样就不存在未来数据结构更改泄露的风险。白名单总是比黑名单更具前瞻性。

答案 1 :(得分:0)

较新版本的JSON.stringify()具有replacer array

例如

```
JSON.stringify(foo, ['week', 'month']);  
// '{"week":45,"month":7}', only keep "week" and "month" properties
```

答案 2 :(得分:0)

尝试:

import pandas as pd
from pandas import ExcelWriter
import requests,re,csv
from bs4 import BeautifulSoup

for i in range(1,5):      # Number of pages plus one 

   url = "https://www.magicbricks.com/property-for-sale/residential- 
   real-estate?bedroom=1,2,3,4,5,%3E5&proptype=Multistorey- 
   Apartment,Builder-Floor-Apartment,Penthouse,Studio- 
   Apartment,Residential-House,Villa,Residential- 
   Plot&cityName=Mumbai".format(i);

   r = requests.get(url)
   soup = BeautifulSoup(r.content)

这应该有效。