一:保存json数据的操作
json的基本单元,主要包含一对(key/value)的值,与map的保存结构类似,是用{ }括起来的一组数据,如{key值,value值} ,{key值,[数值1,数值2,数值3]}
public class MainActivity extends Activity {
private String namedata[] = new String[]{"张三","李四"};
private int agedata[] = new int[]{20,21};
private int salarydata[] = new int[]{5000,8000};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
JSONObject alldata = new JSONObject();//创建最外层的json对象,用于保存多个字符串信息
JSONArray js = new JSONArray();//用于保存多个JSONObject对象
for (int i = 0;i<namedata.length;i++){
JSONObject temp = new JSONObject();//定义一个新的JSONObject
try {
temp.put("name",namedata[i]);//保存姓名进JSONObject
temp.put("age",agedata[i]);
temp.put("salary",salarydata[i]);
} catch (JSONException e) {
e.printStackTrace();
}
js.put(temp);//保存JSONObject进JSONArray
}
try {
alldata.put("personalData",js);
} catch (JSONException e) {
e.printStackTrace();
}
if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
return;
}
File file = new File(Environment.getExternalStorageDirectory().toString()
+File.separator+"myfile"+File.separator+"json.txt");
if (!file.getParentFile().exists()){//父文件不存在
file.getParentFile().mkdir();//创建文件夹
}
PrintStream out;
try {
out = new PrintStream(new FileOutputStream(file));
out.print(alldata.toString());
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally {
if (out !=null){
out.close();
}
}
}
}
public class MainActivity extends Activity {
private TextView msg = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.main);
msg = (TextView)findViewById(R.id.msg);
String str = " { \"memberdata\": " + //key值
"[{\"id\":1,\"name\":李华,\"age\":30}," +//value值
"{\"id\":2,\"name\":张三,\"age\":20}," +
"{\"id\":3,\"name\":王五,\"age\":18}]," +
"\"guet\":\"桂林电子科技大学\" } "; //guet是key值,桂林电子科技大学是value值
StringBuffer buf = new StringBuffer();
Map<String,Objects> result = null;//json解析函数
try {
result = parseJson(str);
} catch (Exception e) {
e.printStackTrace();
}
buf.append("学校名称:" + result.get("guet") + "\n");//取出学校的信息
List<Map<String,Objects>> alldata = (List<Map<String,Objects>>) result.get("memberdata");//取出memberdata结点里面的数据并存入集合中
Iterator<Map<String,Objects>> iter = alldata.iterator();//实例化
while (iter.hasNext()){
Map<String,Objects> map = iter.next();//从迭代器里面取出每一对键值对
buf.append("id"+map.get("id")+"姓名:"+map.get("name")+"年龄:"+map.get("age")+"\n");
}
msg.setText(buf);
}
public Map<String,Objects> parseJson(String str) throws Exception{
Map<String, String> allmap = new HashMap<>();
JSONObject jsondata = new JSONObject(str); //定义JSONObject
allmap.put("guet",jsondata.getString("guet"));
JSONArray jsonarr =jsondata.getJSONArray("memberdata");
List<Map<String,Objects>> all = new ArrayList<Map<String, Objects>>();
for (int i = 0;i<jsonarr.length();i++){//取出数组中的每一个JSONObject
Map<String, Integer> map = new HashMap<>();//保存每一组信息
JSONObject jsonObj = jsonarr.getJSONObject(i);//取得每一个JSONObject
map.put("id",jsonObj.getInt("id"));
map.put("name",jsonObj.getString("name"));
map.put("age",jsonObj.getInt("age"));
all.add(map);
}
allmap.put("memberdata",all);
return null;
}
}