在社交应用(类似于Facebook)中,用户的个人资料可能如下所示:
{"name": "Peter",
"gender": "Male",
"age": "22"}
现在,当人们浏览彼得的页面时,人们就可以看到彼得的年龄,性别和名字。
让我们说彼得是一个非常私人的人,他不希望任何人知道他的任何个人信息。我可以将数据结构化为:
{"name": "Peter",
"alias":"GoofyDuck",
"gender": "Male",
"age": "22",
"showGender": false,
"showName":false,
"showAge": false}
当其他人导航到他的页面时,由于json中的布尔值设置,页面可能会阻止显示他的详细信息,但是,如果您有很多个人详细信息字段(例如,除了名称,性别和年龄,彼得可以把他的地址,电话号码等),它可能使json不必要很长。
我想也许二进制字符串上的某种类型的掩码可能更合适:
{"name": "Peter",
"gender": "Male",
"age": "22",
"privacy":"110"}
在这种情况下,"隐私"上的二进制文件字段可以说只有他的年龄会被隐藏,因为它是0。
我认为二进制字符串是在云上存储首选项的最有效方法,但我没有看到任何使用掩码来掩盖java中二进制文字含义的示例。
我还可以解析二进制字符串以分别获取每个值,但认为不会有效。有没有办法可以分别掩盖每个值?
答案 0 :(得分:2)
我认为更好的设计是将每个属性与自己的隐私设置结合起来:
{ {"name": "Peter", "show": false},
{"alias":"GoofyDuck", "show": false},
{"gender": "Male", "show": false},
{"age": "22", "show": false} }
这种设计有几个优点:
使用此设计,您可以拥有更多微调隐私设置,而不仅仅是布尔值:
{ {"name": "Peter", "show": "all"},
{"alias":"GoofyDuck", "show": "all"},
{"gender": "Male", "show": "friends"},
{"age": "22", "show": "none"} }
一旦你拥有每个属性的结构,你可以在需要时使用更多的元数据来增强它,例如,
{ {"name": "Peter", "show": "all", "decorate": "bold"},
{"alias":"GoofyDuck", "show": "all"},
{"gender": "Male", "show": "friends"},
{"age": "22", "show": "none"} }
答案 1 :(得分:0)
你可以拥有可见属性的白名单
{public_attributes: {"name", "gender", "age"}
请注意,您不应使用黑名单,因为在添加新属性时可能会意外泄露数据