【发布时间】:2013-03-03 01:09:43
【问题描述】:
在我下面的代码中,colData 存储 JSON String。 colData 的示例示例-
{"lv":[{"v":{"tenureSiteReg":null,"bghtItms":48,"pnlValue":105.478409,"byrSgmnt":2,"cstmrId":"814296998","slrRevRnk" :-99.0,"soldItms":0,"slrSgmnt":6,"byrRevRnk":0.013,"mainAcct":78,"gmv":0.0,"cstmrRevRnk":0.021,"pnlRev":313.438843,"cstmrSgmnt": 51,"gmb":4674.76,"totalVal":142.536293,"userId":493},"cn":42}],"lmd":20130}
现在我正在尝试将id 值与上述JSON String 中的userId 值匹配。
这意味着如果id 的值是493,那么在上面的JSON 字符串中userId 的值也应该是493。在 JSON 字符串中,可能有很多 userId values,因此所有 userId 值都应该与 id 匹配。如果其中任何一个不匹配,则记录异常。
所以我正在尝试这样的事情-
private static final Pattern USER_ID_PATTERN = Pattern.compile("userId:\\d+");
for (String str : colData) {
Matcher matcher = USER_ID_PATTERN.matcher(str);
while (matcher.find()) {
if (!matcher.group().equals("userId:"+id))
System.out.println("LOG exception");
}
}
但是对于上面的 JSON 字符串,它也不会进入while loop。我有什么遗漏吗?
【问题讨论】:
-
我有什么遗漏吗? JSON 解析器,也许?
-
@HotLicks,你能不能也给我提供一个例子来实现上述场景?
-
将 JSON 解析为地图。在地图中找到地图的“lv”数组。遍历数组并找到“v”元素,这是另一个映射。在该地图中找到“userId”元素。
-
id值从何而来?它是一个单独的字符串还是应该在 JSON 中? -
是的,它是一个单独的字符串。
标签: java regex json pattern-matching