java 读取解析json以及接sdk注意事项

来源:互联网 发布:淘宝半价优惠券 编辑:程序博客网 时间:2024/06/05 06:06

参考

接sdk注意事项以及本地文件读取

import net.sf.json.JSONArray;import net.sf.json.JSONObject;public class HelloWorld {public static void main(String[] args) {String context = new Util().ReadFile("res/countries.json");JSONArray jsonArray = JSONArray.fromObject(context);JSONObject object = JSONObject.fromObject(jsonArray.get(0));JSONObject detail = null;try {detail = object.getJSONObject("BRA");} catch (Exception e) {System.out.println("not found!!!");return;} finally{if(detail != null){JSONArray price = detail.getJSONArray("price");String currencyCode = detail.getString("currencyCode");System.out.println(currencyCode);System.out.println(price);}}}}

输出:BRA_c[1,2,3]

json内容:

[{"BRA":{"price":[1,2,3],"currency":"BRA_c"},"BRB":{"price":[4,5,6],"currency":"BRB_c"},"BRC":{"price":[7,8,9],"currency":"BRC_c"},}]



util

import java.io.BufferedReader;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStreamReader;public class Util {public String ReadFile(String Path){BufferedReader reader = null;String laststr = "";try{FileInputStream fileInputStream = new FileInputStream(Path);InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "UTF-8");reader = new BufferedReader(inputStreamReader);String tempString = null;while((tempString = reader.readLine()) != null){laststr += tempString;}reader.close();}catch(IOException e){e.printStackTrace();}finally{if(reader != null){try {reader.close();} catch (IOException e) {e.printStackTrace();}}}return laststr;}}

相关类库[上传资源]以及json文件

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

更新: 上面那套是别人包装过的? 但是在android中使用会和原生的冲突。。所以只能用原生的或别人推荐的GSon。


1.不是直接把jar复制到libs下或者直接添加jar到库中就可以。 一般要把提供给你的库 包【导入进来,作为库的工程被其他工程所引用】,但是有的时候能正确引用,有的时候不行,换个目录试试看2.在res目录下新建文件夹 raw,然后把文件复制到该目录下,就可用通过R.raw.countries 来访问。  貌似是保持原始的数据而不是转为二进制之类的3.读取文件。用法1:public String ReadFile(String path){BufferedReader reader = null;String laststr = "";try{FileInputStream fileInputStream = new FileInputStream(path);InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "UTF-8");reader = new BufferedReader(inputStreamReader);String tempString = null;while((tempString = reader.readLine()) != null){laststr += tempString;}reader.close();}catch(IOException e){e.printStackTrace();}finally{if(reader != null){try {reader.close();} catch (IOException e) {e.printStackTrace();}}}return laststr;}用法2:public String ReadFile2(InputStream fileInputStream){BufferedReader reader = null;String laststr = "";try{InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "UTF-8");reader = new BufferedReader(inputStreamReader);String tempString = null;while((tempString = reader.readLine()) != null){laststr += tempString;}reader.close();}catch(IOException e){e.printStackTrace();}finally{if(reader != null){try {reader.close();} catch (IOException e) {e.printStackTrace();}}}return laststr;}按正常应该是用法1就是可以了,但是实际中就是读不出数据,后改成第二种用法:private void initJsonData(){InputStream inputStream = getResources().openRawResource(R.raw.countries);String context = new Util().ReadFile2(inputStream);JSONArray arr = null;try {arr = new JSONArray(context);jsonData = arr.getJSONObject(0);} catch (Exception e) {}}如果json数据有,但是读出来有问题或者异常,可以改json为简单的试试看,有时候是汉字的空格之类的 [{"name":"joe"}]



0 0