【问题标题】:A regex expression that can remove data from a json object可以从 json 对象中删除数据的正则表达式
【发布时间】:2016-07-21 02:13:16
【问题描述】:

我希望能够有选择地从 json 架构中删除元素。想象一个 json 对象,它包含一个更大但类似的用户数组

[{
    "users": [{
        "firstName": "Nancy",
        "socialSecurityNumber": "123-45-6789",
        "sex": "Female",
        "id": "1234",
        "race": "Smith",
        "lastName": "Logan"
    }, {
        "firstName": "Charles",
        "socialSecurityNumber": "321-54-9876",
        "sex": "Male",
        "id": "3456",
        "race": "White",
        "lastName": "Clifford"
    }],

我想使用正则表达式从 json 架构中去除 socialSecurityNumber 元素。正则表达式要删除什么

"socialSecurityNumber": "whatever value",

看起来数据对的值可以是任何字符串?

我无法确定数据对的位置以及它是否会有尾随逗号。

【问题讨论】:

  • 您不应该为此使用正则表达式,而应该使用 JSON 解析器。
  • 您是否建议我反序列化 json 对象,然后运行该结构以删除不需要的数据?
  • 绝对。其他任何东西都会有奇怪的失败条件。
  • 是的,我也建议使用 JSON 解析器,除非您可以保证要删除的部分始终在同一行中。这个 JSON 是从哪里来的?
  • 它来自 Coldfusion/Hibernate ORM 实体。我不能保证零件总是在同一行。我不熟悉 JSON 解析器。你能说出一些常见的解析器吗? JSON 将作为 RESTful 服务响应返回,因此在离开服务器之前需要在 Coldfusion 中完成处理。

标签: json regex


【解决方案1】:

尝试用空替换下面的正则表达式:

"socialSecurityNumber": "(\d|\-)",

如果此信息分成两行,或者 SSN 是最后一个用户字段,则可能会出错,因为它后面没有逗号。

不管怎样,替换操作后,检查是否有字符串

"socialSecurityNumber"

确认这个可以使用。如果仍有未替换的字符串,那么您将需要一个 JSON 解析器来正确消除此信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-25
    • 2022-11-18
    • 2017-03-30
    • 1970-01-01
    • 2019-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多