Как вы получаете значение от объекта json, если тип JsonArray
- "Личный"? Я хотел бы, чтобы пара значений имени знака называлась так:
String s = "February" ;
int i = 3;
Я был бы очень признателен за некоторые советы о том, как продвигаться дальше.
Заранее спасибо, Sankar
String monthArray[] = { "January", "February", "March", "April", "May",
"June", "July", "August", "September", "October", "November",
"December" };
System.out.println("Size of month array:-->> " + monthArray.length);
JSONObject jbj = new JSONObject();
JSONObject jbj1 = new JSONObject();
JSONObject jbj2 = new JSONObject();
JSONObject general = new JSONObject();
JSONArray jarray = new JSONArray();
JSONArray jarray1 = new JSONArray();
JSONArray jarray2 = new JSONArray();
JSONObject finalGen = new JSONObject();
jbj.put("February", 3);
jbj.put("March", 15);
jbj.put("April", 6);
jbj.put("July", 10);
jbj.put("December", 5);
jbj1.put("February", 3);
jbj1.put("March", 14);
jbj1.put("April", 23);
jbj1.put("May", 6);
jbj2.put("February", 33);
jbj2.put("March", 12);
jbj2.put("May", 4);
jbj2.put("June", 7);
jarray.add(jbj);
jarray1.add(jbj1);
jarray2.add(jbj2);
general.put("Personal", jarray);
general.put("Common", jarray1);
general.put("Management", jarray2);
finalGen.put("FinalResultSet", general);
System.out.println("\n Personal Value :-->> " + finalGen.toString(3));
JSONObject finalson = JSONObject.fromObject(finalGen
.get("FinalResultSet"));
JSONArray jarra = finalson.getJSONArray("Personal");
for (int i = 0; i < jarra.size(); i++) {
JSONObject jb = jarra.getJSONObject(i);
for (int p = 0; p < monthArray.length; p++) {
String s = monthArray[p];
System.out.println("\n VALUE OF STR " + s);
String t = jb.getString(s);
System.out.println("\n VALUE OF STR Json Str " + t);
}
}
System.out.println("Personal String " + jarra);
}
Size of month array:-->> 12
Personal Value :-->> {"FinalResultSet": {
"Personal": [ {
"February": 3,
"March": 15,
"April": 6,
"July": 10,
"December": 5
}],
"Common": [ {
"February": 3,
"March": 14,
"April": 23,
"May": 6
}],
"Management": [ {
"February": 33,
"March": 12,
"May": 4,
"June": 7
}]
}}
VALUE OF STR January
Exception in thread "main" net.sf.json.JSONException: JSONObject["January"] not found.
at net.sf.json.JSONObject.getString(JSONObject.java:2177)
at JFreechartDemo.XMLData.main(XMLData.java:68)
Вы пытаетесь получить значение поля с ключом "Январь" внутри цикла for
, но такого поля нет. Сначала вы должны поместить пару ключевых значений в свой объект JSON.
Взгляните на документацию JSONObject get
method. Там есть что-то подобное:
Throws:
JSONException - if the key is not found.
Поскольку метод get генерирует исключение, если нет ключа, это не очень хорошая идея для итерации по всему массиву с месяцами и попытки угадать, находится ли конкретный месяц внутри JSON в качестве ключа. Вы можете сделать это, если вы хотите, но вы должны использовать has
метод первым, чтобы проверить, если месяц действительно существует.
С другой стороны, вы можете получить все имена ключей из JSONObject, а затем вызвать метод get
только для этих имен.
private void doLogin(String userName, String password) {
//http://obbg.in/api/login.php?action=login&username=tejal+patel+&password=ZGhhcmE5ODk4MjQ4Mzg3%0A
byte[] data = new byte[0];
try {
data = password.getBytes("UTF-8");
password = Base64.encodeToString(data, Base64.DEFAULT);
Ion.with(this)
.load("http://obbg.in/api/login.php")
.setBodyParameter("action", "login")
.setBodyParameter("username", URLEncoder.encode(userName, "utf-8"))
.setBodyParameter("password", password)
.asString()
.setCallback(this);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
@Override
public void onCompleted(Exception e, String result) {
try {
JSONObject jsonObject = new JSONObject(result);
JSONArray username = jsonObject.optJSONArray("Result");
etLoginPassword.setText("");
} catch (JSONException e1) {
e1.printStackTrace();
}
}