我在解析器(在本例中为PowerBI)未采用未引用的值时遇到问题。
来自API的示例JSON文件正在验证正常,但是PowerBI没有任何文件:
{'requester_id': 361114274894, 'submitter_id': 361114274894, 'assignee_id': 361282665913, 'organization_id': 360009532534, 'group_id': 360000498954, 'name':'John Doe'}
我想找到所有不带引号的值,以便我可以替换它们。
请帮助。
答案 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);