在我下面的代码中,colData
stores JSON String
。colData 的示例示例-
{"lv":[{"v":{"price":70.0,"userId":419},"cn":3},
{"v":{"price":149.99,"userId":419},"cn":3},
{"v":{"price":54.95,"userId":419},"cn":3}],
"lmd":20130206212543}
现在我正在尝试将id
value 与userId
上面的 value 匹配JSON String
。我id
从不同的来源获得价值。这意味着如果id
值419
在上面的 JSON 字符串中,那么userId
值也应该是419
. 在 JSON 字符串中,可能有很多,userId values
所以所有userId
值都应该与id
. 如果其中任何一个不匹配,则记录异常。
所以我正在尝试这样的事情-
final int id = generateRandomId(random);
for (String str : colData) {
if (!isJSONValid(str, id)) {
// log the exception here
LOG.error("Invalid JSON String " +str+ "with id" +id);
}
}
public boolean isJSONValid(final String str, final int id) {
boolean valid = false;
try {
final JSONObject obj = new JSONObject(str);
final JSONArray geodata = obj.getJSONArray("lv");
final int n = geodata.length();
for (int i = 0; i < n; ++i) {
final JSONObject person = geodata.getJSONObject(i);
JSONObject menu = person.getJSONObject("v");
if(menu.getInt("userId") == id) {
valid = true;
}
}
} catch (JSONException ex) {
valid = false;
}
return valid;
}
根据我的理解,看起来我可以使isJSONValid
方法更清洁。在我上面的isJSONValid
方法中,我重复了一些我不应该做的事情。如果我错过了什么,谁能帮助我如何让这个更干净。我将能够学到更多的东西。谢谢您的帮助