RegEx查找不带引号的json值

时间:2018-07-29 11:33:37

标签: javascript json regex

我在解析器(在本例中为PowerBI)未采用未引用的值时遇到问题。

来自API的示例JSON文件正在验证正常,但是PowerBI没有任何文件:

{'requester_id': 361114274894, 'submitter_id': 361114274894, 'assignee_id': 361282665913, 'organization_id': 360009532534, 'group_id': 360000498954, 'name':'John Doe'}

我想找到所有不带引号的值,以便我可以替换它们。

请帮助。

4 个答案:

答案 0 :(得分:-1)

似乎您想将int值转换为字符串。

var json = {'requester_id': 361114274894, 'submitter_id': 361114274894, 'assignee_id': 361282665913, 'organization_id': 360009532534, 'group_id': 360000498954, 'name':'John Doe'}

    Object.keys(json).forEach(i => json[i]=json[i].toString());

    // output
    json
    {
      assignee_id:"361282665913"
      group_id:"360000498954"
      name:"John Doe"
      organization_id:"360009532534"
      requester_id:"361114274894"
      submitter_id:"361114274894"
    }

答案 1 :(得分:-1)

您可以使用for in循环。假设所有非字符串项目都是数字,则将起作用。

.regexMatchers("\\/sUrl\\?params=\\{url:%22reports\\/Manager\%22,subSystem:%22ABS%22\\}").access("hasRole('ROLE_ABS')")

如果目标是使用非字符串值来收集所有键而不是替换它们,则可以将它们保存到数组中并在以后进行操作:

const obj = {
  a: 123,
  b: "234234",
  c: 09,
};

console.log(obj);

for (key in obj) {
  obj[key] = obj[key] + "";
}

console.log(obj);

答案 2 :(得分:-1)

问题在于属性名称周围使用单引号而不是双引号。

let correctedInput = input.replace(/'/g, '"');
let parsedInput = JSON.parse(correctedInput);

parsedInput现在将成为您的javascript对象。

input.replace(/'/g, '"')将查找并替换所有'个字符,并将其替换为"个字符。除非您的任何属性值中都包含单引号,否则此方法应该可以正常工作-例如,名称O'malley的解析将不正确。

答案 3 :(得分:-2)

您可以在Java中执行以下正则表达式模式匹配

字符串rtype =“ ^ \” | \“ $”;

字符串值=((JSONObject)nameOfObject).get(“ key”)。toString()。matches(rtype);

(((JSONObject)nameOfObject).get(“ key”)。toString()。replaceAll(rtype);