Android-создание массива JSON и объекта JSON
Как я могу создать JSON с этим форматом в Android:
Поскольку API, который я буду передавать, будет анализировать JsonArray, то объект.
Или было бы хорошо, если бы просто передать объект json? Так как мне просто нужно будет вставить 1 транзакцию на вызов службы.
{
"student": [
{
"id": 1,
"name": "John Doe",
"year": "1st",
"curriculum": "Arts",
"birthday": 3/3/1995
},
{
"id": 2,
"name": "Michael West",
"year": "2nd",
"curriculum": "Economic",
"birthday": 4/4/1994
}
]
}
то, что я знаю, это только JSONObject.
Как этот.
JSONObject obj = new JSONObject();
try {
obj.put("id", "3");
obj.put("name", "NAME OF STUDENT");
obj.put("year", "3rd");
obj.put("curriculum", "Arts");
obj.put("birthday", "5/5/1993");
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
любые идеи. Спасибо
7 ответов:
использовать следующий код:
JSONObject student1 = new JSONObject(); try { student1.put("id", "3"); student1.put("name", "NAME OF STUDENT"); student1.put("year", "3rd"); student1.put("curriculum", "Arts"); student1.put("birthday", "5/5/1993"); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } JSONObject student2 = new JSONObject(); try { student2.put("id", "2"); student2.put("name", "NAME OF STUDENT2"); student2.put("year", "4rd"); student2.put("curriculum", "scicence"); student2.put("birthday", "5/5/1993"); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } JSONArray jsonArray = new JSONArray(); jsonArray.put(student1); jsonArray.put(student2); JSONObject studentsObj = new JSONObject(); studentsObj.put("Students", jsonArray); String jsonStr = studentsObj.toString(); System.out.println("jsonString: "+jsonStr);
public JSONObject makJsonObject(int id[], String name[], String year[], String curriculum[], String birthday[], int numberof_students) throws JSONException { JSONObject obj = null; JSONArray jsonArray = new JSONArray(); for (int i = 0; i < numberof_students; i++) { obj = new JSONObject(); try { obj.put("id", id[i]); obj.put("name", name[i]); obj.put("year", year[i]); obj.put("curriculum", curriculum[i]); obj.put("birthday", birthday[i]); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } jsonArray.put(obj); } JSONObject finalobject = new JSONObject(); finalobject.put("student", jsonArray); return finalobject; }
JSONObject obj = new JSONObject(); try { obj.put("id", "3"); obj.put("name", "NAME OF STUDENT"); obj.put("year", "3rd"); obj.put("curriculum", "Arts"); obj.put("birthday", "5/5/1993"); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } JSONArray js=new JSONArray(obj.toString()); JSONObject obj2 = new JSONObject(); obj2.put("student", js.toString());
вы можете создать метод a и передать ему параметры и получить json в качестве ответа.
private JSONObject jsonResult(String Name,int id, String curriculum) throws JSONException { JSONObject json = null; json = new JSONObject("{\"" + "Name" + "\":" + "\"" + Name+ "\"" + "," + "\"" + "Id" + "\":" + id + "," + "\"" + "Curriculum" + "\":" + "\"" + curriculum+ "\"" + "}"); return json; }Я надеюсь, что это поможет вам.
боролись с этим, пока я не узнал ответ:
использовать библиотеку GSON:
Gson gson = Gson(); String str_json = gson.tojson(jsonArray);`передайте массив json. Это будет автоматически stringfied. Этот вариант отлично работал для меня.
вот более простая (но не такая короткая) версия, которая не требует try-catch:
Map<String, String> data = new HashMap<>(); data.put("user", "[email protected]"); data.put("pass", "123"); JSONObject jsonData = new JSONObject(data);Если вы хотите добавить jsonObject в поле, вы можете сделать это так:
data.put("socialMedia", (new JSONObject()).put("facebookId", "1174989895893400")); data.put("socialMedia", (new JSONObject()).put("googleId", "106585039098745627377"));к сожалению, он нуждается в try-catch из-за метода put ().
если вы хотите избежать try-catch снова (не очень рекомендуется, но это нормально, если вы можете гарантировать хорошо сформированные строки json), вы можете сделать так:
data.put("socialMedia", "{ 'facebookId': '1174989895893400' }");вы можете сделать то же самое про массивы jsonarray и так далее.
ваше здоровье.
JSONObject jsonResult = new JSONObject(); try { jsonResult.put("clave", "valor"); jsonResult.put("username", "iesous"); jsonResult.put("password", "1234"); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } Log.d("DEV","jsonResult->"+jsonResult);
Comments