以下のコードでは、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
値と値を一致させようとしています。私は別のソースから価値を得ています。値が上記の JSON 文字列の場合、値も である必要があります。また、JSON 文字列では、多くの可能性があるため、すべての値が と一致する必要があります。それらのいずれかが一致しない場合は、例外をログに記録します。userId
JSON String
id
id
419
userId
419
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
方法では、やってはいけないことを繰り返しています。私が何かを逃した場合、これをよりきれいにする方法を誰かが助けてくれますか? 私はいくつかのより多くのことを学ぶことができるでしょう。助けてくれてありがとう