JSON Parsing в Android

Я искал много на JSON Parsing в Android, но не мог полностью убедить. На самом деле получил краткую идею, но не столь ясную в отношении JSON Parsing.

Как реализовать JSON-анализ в приложении?

Solutions Collecting From Web of "JSON Parsing в Android"

Это очень простая строка JSON

{"key1":"value1","key2":"value2"} 

Чтобы получить значения для него, используйте JSONObject следующим образом:

 JSONObject json_obj=new JSONObject(your json string); String value1=json_obj.getString("key1"); String value2=json_obj.getString("key2"); 

Это немного сложная строка json

 [{"key1":"value1","key2":"value2"},{"key1":"value1","key2":"value2"}] 

Чтобы извлечь значения из этого использования, JSONArray

 JSONArray jArray=new JSONArray(your json string); for(int i=0;i<(jArray.length());i++) { JSONObject json_obj=jArray.getJSONObject(i); String value1=json_obj.getString("key1"); String value2=json_obj.getString("key2"); } 

Надеюсь это немного поможет………..

Здесь вы также можете ознакомиться с библиотекой GSON в Google. В руководстве пользователя GSON есть несколько полезных примеров, которые помогут вам начать работу. Я нашел GSON простым и мощным.

См .: http://developer.android.com/reference/org/json/package-summary.html.

Прежде всего, вы будете работать с JSONArray и JSONObject .

Простой пример:

  try { JSONObject json = new JSONObject(jsonString); int someInt = json.getInt("someInt"); String someString = json.getString("someString"); } catch (JSONException e) { Log.d(TAG, "Failed to load from JSON: " + e.getMessage()); } 

Вы можете использовать пакет org.json , входящий в SDK.

См. Здесь: http://developer.android.com/reference/org/json/JSONTokener.html

Еще один выбор: использовать Джексона.

Простое использование; Если у вас есть POJO для привязки к:

  ObjectMapper mapper = new ObjectMapper(); // reusable MyClass value = mapper.readValue(source, MyClass.class); // source can be String, File, InputStream // back to JSON: String jsonString = mapper.writeValue(value); 

К карте:

  Map<?,?> map = mapper.readValue(source, Map.class); 

Или к дереву: (аналогично тому, что предусмотрено пакетом Android org.json по умолчанию)

  JsonNode treeRoot = mapper.readTree(source); 

И больше примеров можно найти по адресу http://wiki.fasterxml.com/JacksonInFiveMinutes .

Преимущества по сравнению с другими пакетами – это молниеносно; Очень гибкий и универсальный (POJO, карты / списки, деревья json, даже потоковый анализатор) и активно развивается.

Этот класс построит объект json:

 public class CreateJSON { private JSONArray mStudArray; private JSONObject mStudObject; Student [] student=new Student[3] ; public CreateJSON() { } public void initData() { //date wirte in student array student[0]=new Student(); student[0].setmStudName("Vikas"); student[0].setmPhoneNo("1234567890"); student[0].setmRollNo(1); student[1]=new Student(); student[1].setmStudName("Rahul"); student[1].setmPhoneNo("1234567890"); student[1].setmRollNo(2); student[2]=new Student(); student[2].setmStudName("Raj"); student[2].setmPhoneNo("1234567890"); student[2].setmRollNo(3); } //student array converts to json array public String writeDataTOJOSON() { //JONS array created here mStudArray=new JSONArray(); initData(); for(int i=0;i<3;i++) { mStudArray.put(createJOSNObject(student[i])); } return mStudArray.toString(); } //student object converted into json object public JSONObject createJOSNObject(Student student) { try { mStudObject=new JSONObject(); mStudObject.put(Constants.NAME,student.getmStudName()); mStudObject.put(Constants.PHONE_NUMBER,student.getmPhoneNo()); mStudObject.put(Constants.ROLL_NUMBER,student.getmRollNo()); } catch (JSONException e) { e.printStackTrace(); } return mStudObject; } } 

// Этот класс будет печатать созданные json

 public class PrintJOSN { private CreateJSON createJSON; private JSONArray mStudnetArray; public String printJSONData() { createJSON=new CreateJSON(); //JSONArray created here. String jons=createJSON.writeDataTOJOSON(); //JONS in String fomart Logger.debug("json"+mStudnetArray); //JOSN array create from string try { mStudnetArray=new JSONArray(jons); } catch (JSONException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } //parse array parse here for(int i=0;i<3;i++) { try { JSONObject studentObj=(JSONObject) mStudnetArray.get(i); String name=studentObj.getString("name"); String phone=studentObj.getString("phone_number"); Integer rollnumber=studentObj.getInt("roll_number"); Logger.debug("Student Object::: "+name+" "+phone+" "+rollnumber); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return null; } } 

// Основная деятельность

 public class JSONParserActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); PrintJOSN printJOSN=new PrintJOSN(); printJOSN.printJSONData(); } } 

Студенческая модель:

 public class Student { private String mStudName; private String mPhoneNo; private Integer mRollNo; public String getmStudName() { return mStudName; } public void setmStudName(String mStudName) { this.mStudName = mStudName; } public String getmPhoneNo() { return mPhoneNo; } public void setmPhoneNo(String mPhoneNo) { this.mPhoneNo = mPhoneNo; } public Integer getmRollNo() { return mRollNo; } public void setmRollNo(Integer mRollNo) { this.mRollNo = mRollNo; } } 

Постоянный класс:

 public class Constants { public static final String NAME="name"; public static final String ROLL_NUMBER="roll_number"; public static final String PHONE_NUMBER="phone_number"; } 

Класс регистратора:

 public class Logger { public static final String APP_ID = "androidapp"; public static String logDir = "/androidapp"; public static String logFileName = "/log.txt"; public static boolean writeLogsToFile = false; public static final int LOG_LEVEL_VERBOSE = 4; public static final int LOG_LEVEL_DEBUG = 3; public static final int LOG_LEVEL_INFO = 2; public static final int LOG_LEVEL_ERROR = 1; public static final int LOG_LEVEL_OFF = 0; public static final int CURRENT_LOG_LEVEL = LOG_LEVEL_DEBUG; public static void log(String message, int logLevel) { if (logLevel > CURRENT_LOG_LEVEL) { return; } else { Log.v(APP_ID, message); if (writeLogsToFile) { writeToFile(message); } } } private static void writeToFile(String message) { try { File sdCard = Environment.getExternalStorageDirectory(); File dir = new File(sdCard.getAbsolutePath() + logDir); dir.mkdirs(); File file = new File(dir, logFileName); PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(file, true), 8 * 1024)); writer.println(APP_ID + " " + new Date().toString() + " : " + message); writer.flush(); writer.close(); } catch (Exception e) { e.printStackTrace(); } } public static void verbose(String message) { log(message, LOG_LEVEL_VERBOSE); } public static void debug(String message) { log(message, LOG_LEVEL_DEBUG); } public static void error(String message) { log(message, LOG_LEVEL_ERROR); } public static void info(String message) { log(message, LOG_LEVEL_INFO); } } 

Проверьте свой журнал, он покажет созданный json и напечатал json.