Android中的JSONparsing

我在Android上search了很多JSONparsing,但是不太相信。 其实有一个简单的想法,但尚不清楚,关于JSONparsing。

如何在应用程序中实现JSONparsing?

这是一个非常简单的JSONstring

{"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"); 

这是一个稍微复杂的jsonstring

 [{"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"); } 

希望这有助于一点………..

您也可以在这里查看Google的GSON库。 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()); } 

您可以使用捆绑在SDK中的org.json包。

看到这里: http : //developer.android.com/reference/org/json/JSONTokener.html

另一个select:使用jackson。

简单的用法; 如果你有一个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/JacksonInFiveMinutesfind。;

与其他软件包相比,它的优势是闪电般的; 非常灵活和多function(POJO,地图/列表,json树,甚至streamparsing器),并积极开发。

这个类将构造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; } } 

//这个类将打印创build的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"; } 

logging器类:

 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); } } 

请检查您的日志,它会显示创build的JSON和打印的JSON。