0

我有一个长字符串,它是一个 json 文件内容。在这个字符串的某个地方,它包含以下内容:“totalWinAmount”:100

为了找到并返回这个值,我目前正在这样做:

int totalWinAmountIndex = line.lastIndexOf("totalWinAmount");
String resultTotalWinAmount = line.substring(totalWinAmountIndex + 16, totalWinAmountIndex + 19);

这有效,resultTotalWinAmount 正确设置为 100,但我很好奇这是否是这种情况的最佳实践,这是否真的是糟糕的编码,或者是否有更好的方法?

4

2 回答 2

1

您可以使用正则表达式:"\s*totalWinAmount\s*"\s*:\s*(?<totalWinAmount>\d*)

这是regex101.com 上的演示

这是获得几个值的最简单的方法(我认为使用 json 转换器是因为这个原因是开销)。但是如果你想找到更多的值,那么肯定,你必须使用 json 转换器(例如 Jackson)。

于 2018-09-27T10:54:10.627 回答
0

您也可以尝试使用正则表达式提取值。像这样的东西应该工作:

resultTotalWinAmount = str.split(".*\"totalWinAmount\"\\s*:\\s*")[1].split("\\D+")[0];

这有点混乱,但无需额外的库即可工作。

但是,我同意孙的观点。为了正确分析 json,您应该始终使用 Jackson 或 GS​​ON 之类的东西。

于 2018-09-27T11:45:44.193 回答