json字符串转换为JSONObject和JSONArray
http://blog.csdn.net/taxiangwuhen/article/details/7849711#comments
一.下载json 具体到http://www.json.org/上找java-json下载,并把其放到项目源代码中,这样就可以引用其类对象了
二.具体转化过程
//JSONObject
String jsonMessage = "{\"语文\":\"88\",\"数学\":\"78\",\"计算机\":\"99\"}";
String value1 = null;
try
{
//将字符串转换成jsonObject对象
JSONObject myJsonObject = new JSONObject(jsonMessage);
//获取对应的值
value1 = myJsonObject.getString("数学");
}
catch (JSONException e)
{
}
System.out.println("value1="+value1);
//JSONArray
jsonMessage = "[{'num':'成绩', '外语':88, '历史':65, '地理':99, 'object':{'aaa':'1111','bbb':'2222','cccc':'3333'}}," +"{'num':'兴趣', '外语':28, '历史':45, '地理':19, 'object':{'aaa':'11a11','bbb':'2222','cccc':'3333'}}," +
"{'num':'爱好', '外语':48, '历史':62, '地理':39, 'object':{'aaa':'11c11','bbb':'2222','cccc':'3333'}}]";
JSONArray myJsonArray;
try
{
myJsonArray = new JSONArray(jsonMessage);
for(int i=0 ; i < myJsonArray.length() ;i++)
{
//获取每一个JsonObject对象
JSONObject myjObject = myJsonArray.getJSONObject(i);
//获取每一个对象中的值
String numString = myjObject.getString("num");
int englishScore = myjObject.getInt("外语");
int historyScore = myjObject.getInt("历史");
int geographyScore = myjObject.getInt("地理");
//获取数组中对象的对象
JSONObject myjObject2 = myjObject.getJSONObject("object");
String aaaString = myjObject2.getString("aaa");
System.out.println("aaaString="+aaaString);
System.out.println("numString="+numString);
System.out.println("englishScore="+englishScore);
System.out.println("historyScore="+historyScore);
System.out.println("geographyScore="+geographyScore);
}
}
catch (JSONException e)
{
}
JSONArray遍历
从json数组中得到相应java数组,如果要获取java数组中的元素,只需要遍历该数组。
1 /** 2 * 从json数组中得到相应java数组 3 * JSONArray下的toArray()方法的使用 4 * @param str 5 * @return 6 */ 7 public static Object[] getJsonToArray(String str) { 8 JSONArray jsonArray = JSONArray.fromObject(str); 9 return jsonArray.toArray(); 10 } 11 12 public static void main(String[] args) { 13 JSONArray jsonStrs = new JSONArray(); 14 jsonStrs.add(0, "cat"); 15 jsonStrs.add(1, "dog"); 16 jsonStrs.add(2, "bird"); 17 jsonStrs.add(3, "duck"); 18 19 Object[] obj=getJsonToArray(jsonStrs.toString()); 20 for(int i=0;i<obj.length;i++){ 21 System.out.println(obj[i]); 22 } 23 }
从json数组中得到java数组,可以对该数组进行转化,如将JSONArray转化为String型、Long型、Double型、Integer型、Date型等等。
分别采用jsonArray下的getString(index)、getLong(index)、getDouble(index)、getInt(index)等方法。
同样,如果要获取java数组中的元素,只需要遍历该数组。
1 /** 2 * 将json数组转化为Long型 3 * @param str 4 * @return 5 */ 6 public static Long[] getJsonToLongArray(String str) { 7 JSONArray jsonArray = JSONArray.fromObject(str); 8 Long[] arr=new Long[jsonArray.size()]; 9 for(int i=0;i<jsonArray.size();i++){ 10 arr[i]=jsonArray.getLong(i); 11 System.out.println(arr[i]); 12 } 13 return arr; 14 } 15 /** 16 * 将json数组转化为String型 17 * @param str 18 * @return 19 */ 20 public static String[] getJsonToStringArray(String str) { 21 JSONArray jsonArray = JSONArray.fromObject(str); 22 String[] arr=new String[jsonArray.size()]; 23 for(int i=0;i<jsonArray.size();i++){ 24 arr[i]=jsonArray.getString(i); 25 System.out.println(arr[i]); 26 } 27 return arr; 28 } 29 /** 30 * 将json数组转化为Double型 31 * @param str 32 * @return 33 */ 34 public static Double[] getJsonToDoubleArray(String str) { 35 JSONArray jsonArray = JSONArray.fromObject(str); 36 Double[] arr=new Double[jsonArray.size()]; 37 for(int i=0;i<jsonArray.size();i++){ 38 arr[i]=jsonArray.getDouble(i); 39 } 40 return arr; 41 } 42 /** 43 * 将json数组转化为Date型 44 * @param str 45 * @return 46 */ 47 public static Date[] getJsonToDateArray(String jsonString) { 48 49 JSONArray jsonArray = JSONArray.fromObject(jsonString); 50 Date[] dateArray = new Date[jsonArray.size()]; 51 String dateString; 52 Date date; 53 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); 54 for (int i = 0; i < jsonArray.size(); i++) { 55 dateString = jsonArray.getString(i); 56 try { 57 date=sdf.parse(dateString); 58 dateArray[i] = date; 59 } catch (Exception e) { 60 e.printStackTrace(); 61 } 62 } 63 return dateArray; 64 } 65 66 67 public static void main(String[] args) { 68 69 JSONArray jsonLongs = new JSONArray(); 70 jsonLongs.add(0, "111"); 71 jsonLongs.add(1, "222.25"); 72 jsonLongs.add(2, new Long(333)); 73 jsonLongs.add(3, 444); 74 75 Long[] log=getJsonToLongArray(jsonLongs.toString()); 76 for(int i=0;i<log.length;i++){ 77 System.out.println(log[i]); 78 } 79 80 JSONArray jsonStrs = new JSONArray(); 81 jsonStrs.add(0, "2011-01-01"); 82 jsonStrs.add(1, "2011-01-03"); 83 jsonStrs.add(2, "2011-01-04 11:11:11"); 84 85 Date[] d=getJsonToDateArray(jsonStrs.toString()); 86 for(int i=0;i<d.length;i++){ 87 System.out.println(d[i]); 88 } 89 } 90 /*结果如下: 91 * 111 92 * 222 93 * 333 94 * 444 95 * 96 * Sat Jan 01 00:00:00 CST 2011 97 * Mon Jan 03 00:00:00 CST 2011 98 * Tue Jan 04 00:00:00 CST 2011 99 */