您的位置:首页 > 移动开发 > Objective-C

使用JSONObject将json文件转化成对象

2017-11-27 09:44 501 查看
    使用JSONObject将json文件转化为对象,最主要的步骤就是:

    1.将json文件转化为字符串,这里用到了文件流的读取

    2.引入json-lib包,调用里面的方法。

比较简单,只当做一个记录

1.贴出test1.js文件

{
"province":[{"cityId":18,"cityName":"西安"},{"cityId":53,"cityName":"广州"}]
}


2.贴出实体类文件

public class Province {
private String cityId;
private String cityName;

public String getCityId() {
return cityId;
}

public void setCityId(String cityId) {
this.cityId = cityId;
}

public String getCityName() {
return cityName;
}

public void setCityName(String cityName) {
this.cityName = cityName;
}

@Override
public String toString() {
return "Province{" +
"cityId='" + cityId + '\'' +
", cityName='" + cityName + '\'' +
'}';
}
}


下面是主要的方法

public class Main {

public static void main(String[] args)throws Exception {
String s = fileRead();
JSONObject jsonObject = new JSONObject().fromObject(s);
List<Map<String, Object>> provinceList = JsonParseUtils.toList(jsonObject.get("province"));
ArrayList<Province> provinces = new ArrayList<>();
for (Map<String, Object> stringObjectMap : provinceList) {
Province province = new Province();
province.setCityId(stringObjectMap.get("cityId").toString());
province.setCityName(stringObjectMap.get("cityName").toString());
provinces.add(province);
}

for (Province province : provinces) {
System.out.println(province);
}

}

public static String fileRead() throws Exception {
File file = new File("test.json");//定义一个file对象,用来初始化FileReader
FileReader reader = new FileReader(file);//定义一个fileReader对象,用来初始化BufferedReader
BufferedReader bReader = new BufferedReader(reader);//new一个BufferedReader对象,将文件内容读取到缓存
StringBuilder sb = new StringBuilder();//定义一个字符串缓存,将字符串存放缓存中
String s = "";
while ((s =bReader.readLine()) != null) {//逐行读取文件内容,不读取换行符和末尾的空格
sb.append(s + "\n");//将读取的字符串添加换行符后累加存放在缓存中
System.out.println(s);
}
bReader.close();
String str = sb.toString();
System.out.println(str );
return str;
}

使用JsonParseUtils调用的方法为:

/***
* 将对象转换为List>
* @param object
* @return
*/
// 返回非实体类型(Map)的List
public static List<Map<String, Object>> toList(Object object)
{
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
JSONArray jsonArray = JSONArray.fromObject(object);
for (Object obj : jsonArray)
{
JSONObject jsonObject = (JSONObject) obj;
Map<String, Object> map = new HashMap<String, Object>();
Iterator it = jsonObject.keys();
while (it.hasNext())
{
String key = (String) it.next();
Object value = jsonObject.get(key);
map.put((String) key, value);
}
list.add(map);
}
return list;
}


这里我就不做过多的说明了,总之思路就是:new一个JsonObject对象,将读取的文件流String转化为jJSONObject,然后new一个JSONArray对象,将object转化为数组对象,将数组以键值对的方式放在map中,然后将map设置到对象中。

so easy!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐