gpt4 book ai didi

java - 使用正则表达式将字符串与 JSON 字符串进行匹配

转载 作者:行者123 更新时间:2023-12-02 07:14:03 26 4
gpt4 key购买 nike

在下面的代码中,colData 存储 JSON 字符串。 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}

现在我尝试将上面 JSON 字符串 中的 id 值与 userId 值进行匹配。这意味着如果 id 值为 493,则上述 JSON 字符串中的 userId 值也应为 493。在 JSON 字符串中,可能有很多 userId 值,因此所有 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 循环。我有什么遗漏的吗?

最佳答案

就像 Hot Lips 在评论中指出的那样,您确实应该为此使用 JSON 处理器。

这是一个使用 Jackson JSON Processor 的基本示例。我假设 id 是一个单独的字符串,因为我在 JSON 中没有看到它。

import java.io.IOException;
import java.util.List;

import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.JsonProcessingException;
import org.codehaus.jackson.map.ObjectMapper;

class Test {
public static void main(String[] args) {
String json = "{\"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}";
String id = "493";

ObjectMapper mapper = new ObjectMapper();

try {
JsonNode rootNode = mapper.readTree(json);
List<JsonNode> userIds = rootNode.findValues("userId");
for (JsonNode node : userIds)
{
if (!id.equals(node.toString())) {
System.out.println("Log exception: id "+id+" != userId "+node);
break;
} else {
System.out.println("Congratulations! id "+id+" = userId "+node);
}
}
} catch (JsonProcessingException e) {
System.out.println("JsonProcessingException: ");
e.printStackTrace();
} catch (IOException e) {
System.out.println("IOException: ");
e.printStackTrace();
}
}
}

运行此类会产生:

Congratulations! id 493 = userId 493

关于java - 使用正则表达式将字符串与 JSON 字符串进行匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15181350/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com