android的json文件,android 读取json文件

发布时间:2023-12-08

android的json文件,android 读取json文件

更新:2022-11-18 16:11

本文目录一览:

1、[android JSON文件解析! 求指点。](#android JSON文件解析! 求指点。)
2、android怎么解析json文件
3、[Android 如何引用本地json文件](#Android 如何引用本地json文件)
4、android怎么读取外部json文件
5、[android 在服务器端生成json格式数据,在客户端怎么解析](#android 在服务器端生成json格式数据,在客户端怎么解析)
6、Android读取本地json文件的方法

android JSON文件解析! 求指点。

JSONObject jsonObj;
jsonObj = new JSONObject(str); // str为返回的json
// 解析老师
JSONArray result = jsonObj.getJSONArray("老师");
ArrayList<Person> list_laoshi = new ArrayList<Person>();
for (int i = 0; i < result.length(); i++) {
    JSONObject jb = (JSONObject) result.opt(i);
    Person laoshi = new Person();
    laoshi.setId(jb.getString("id"));
    laoshi.setName(jb.getString("name"));
    laoshi.setType(jb.getString("type"));
    list_laoshi.add(laoshi);
}

上面代码是把json文件中的老师解析成person对象加入集合,解析家人和同学方法一样,望采纳!

android怎么解析json文件

你好,我试过了,这样能取到你要的结果: 用的gson-2.2.4.jar包,你应该有吧,没有百度搜下去下个就好了。

import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
public class MyTest {
    public static void main(String[] args) {
        String json = "{'resultcode':'200','reason':'ReturnSuccessd!','result':{'data':[{'MCC':'460','MNC':'1','LNG':'120.721423','LAT':'31.29854','O_LNG':'120.72577772352','O_LAT':'31.296529947917','PRECISION':'1101','ADDRESS':'江苏省苏州市吴中区金鸡湖大道368号'}]}}";
        JsonParser jsonParser = new JsonParser();
        JsonObject jsonObj = jsonParser.parse(json).getAsJsonObject();
        JsonObject result = jsonObj.get("result").getAsJsonObject();
        JsonArray data = result.get("data").getAsJsonArray();
        String O_LNG = data.get(0).getAsJsonObject().get("O_LNG").getAsString();
        String O_LAT = data.get(0).getAsJsonObject().get("O_LAT").getAsString();
        String ADDRESS = data.get(0).getAsJsonObject().get("ADDRESS").getAsString();
        System.out.println(O_LNG);
        System.out.println(O_LAT);
        System.out.println(ADDRESS);
    }
}

Android 如何引用本地json文件

有时候遇到要一些模拟数据的时候,要么写个List<T>,要么写死。 然后数据比较多的时候可以引用本地资源文件,记录下如何使用本地json文件

  1. 在java同级目录下创建"assets"资源文件夹
  2. 编辑json文本内容 至于json文件夹内容 就自定义了,想要什么内容写什么,对于一个做项目多了的开发者而言 json数据是熟悉到不能再熟悉的了 以下是我在淘宝一个个复制过来自己拼装的一些商品数据 不需要加任何标识,只需要标准的json数据格式就可以了
  3. 引用和json解析的工具类,解析用的 Gson也是经常用到的
  4. 最后在需要的地方引用,"ExchangeBean"是根据json内容写的一个模型,用于接收存放数据 有时间再补上demo,下面是效果图:

android怎么读取外部json文件

比如说 读取sd卡里的

private static String SDCardPATH = Environment.getExternalStorageDirectory() + "/";
/**
 * 读取文本文件
 *
 * @param filePath
 * @return
 */
public static String readTextFile(String filePath) {
    StringBuilder sb = new StringBuilder();
    try {
        File file = new File(SDCardPATH + filePath);
        InputStream in = null;
        in = new FileInputStream(file);
        int tempbyte;
        while ((tempbyte = in.read()) != -1) {
            sb.append((char) tempbyte);
        }
        in.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return sb.toString();
}

然后你就可以进行你的解析json了。

android 在服务器端生成json格式数据,在客户端怎么解析

因为这次要从服务器端得到Json数据,并且通过解析之后把解析后的数据显示在Android客户端中,首先部署服务器端代码(直接使用Jsp/Servlet): 构造的Json数据如下:

[{"name":"张三","address":"北京","age":20},{"name":"李四","address":"上海","age":30},{"name":"王五","address":"深圳","age":35}]

[一]服务器端(Person.java省略):

①:数据构造JsonService.java

public class JsonService {
    public static List<Person> getListPerson() {
        List<Person> mLists = new ArrayList<Person>();
        mLists.add(new Person("张三", "北京", 20));
        mLists.add(new Person("李四", "上海", 30));
        mLists.add(new Person("王五", "深圳", 35));
        return mLists;
    }
}

②:Servlet的代码(包括构造Json数据,没有使用Json数据转换方法)JsonServlet.java

public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html");
    response.setCharacterEncoding("UTF-8");
    PrintWriter out = response.getWriter();
    List<Person> persons = JsonService.getListPerson();
    StringBuffer sb = new StringBuffer();
    sb.append('[');
    for (Person person : persons) {
        sb.append('{').append("\"name\":").append("\""+person.getName()+"\"").append(",");
        sb.append("\"address\":").append("\""+person.getAddress()+"\"").append(",");
        sb.append("\"age\":").append(person.getAge());
        sb.append('}').append(",");
    }
    sb.deleteCharAt(sb.length() - 1);
    sb.append(']');
    out.write(new String(sb));
    out.flush();
    out.close();
}

③:部署到Tomact 浏览器输入直接访问结果如下:

[{"name":"张三","address":"北京","age":20},{"name":"李四","address":"上海","age":30},{"name":"王五","address":"深圳","age":35}]

至此服务器端代码编码完成,下面进行客户端代码编写;

(二)客户端(Person类,和展示数据的布局文件因为简单省去)

①:获取服务器端的Json数据并且解析的工具类JsonParse.java 必要的需要导入的包省去

public class JsonParse {
    /**
     * 解析Json数据
     *
     * @param urlPath
     * @return mlists
     * @throws Exception
     */
    public static List<Person> getListPerson(String urlPath) throws Exception {
        List<Person> mlists = new ArrayList<Person>();
        byte[] data = readParse(urlPath);
        JSONArray array = new JSONArray(new String(data));
        for (int i = 0; i < array.length(); i++) {
            JSONObject item = array.getJSONObject(i);
            String name = item.getString("name");
            String address = item.getString("address");
            int age = item.getInt("age");
            mlists.add(new Person(name, address, age));
        }
        return mlists;
    }
    /**
     * 从指定的url中获取字节数组
     *
     * @param urlPath
     * @return 字节数组
     * @throws Exception
     */
    public static byte[] readParse(String urlPath) throws Exception {
        ByteArrayOutputStream outStream = new ByteArrayOutputStream();
        byte[] data = new byte[1024];
        int len = 0;
        URL url = new URL(urlPath);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        InputStream inStream = conn.getInputStream();
        while ((len = inStream.read(data)) != -1) {
            outStream.write(data, 0, len);
        }
        inStream.close();
        return outStream.toByteArray();
    }
}

②:主Activity类

public class MainActivity extends Activity {
    private Button mButton;
    private ListView mListView;
    // 使用IP不能使用localhost或者127.0.0.1,因为android模拟器默认绑定这个IP,这里应该访问局域网IP
    private static final String urlPath = "";
    private static final String TAG = "MainActivity";
    private List<Person> persons;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mButton = (Button) findViewById(R.id.button1);
        mListView = (ListView) findViewById(R.id.listView1);
        mButton.setOnClickListener(new MyOnClickListener());
    }
    private class MyOnClickListener implements OnClickListener {
        @Override
        public void onClick(View v) {
            try {
                // 得到Json解析成功之后数据
                persons = JsonParse.getListPerson(urlPath);
                List<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();
                for (int i = 0; i < persons.size(); i++) {
                    HashMap<String, Object> map = new HashMap<String, Object>();
                    map.put("name", persons.get(i).getName());
                    map.put("address", persons.get(i).getAddress());
                    map.put("age", persons.get(i).getAge());
                    data.add(map);
                }
                // 初始化适配器,并且绑定数据
                SimpleAdapter _Adapter = new SimpleAdapter(MainActivity.this,
                        data, R.layout.listview_item, new String[] { "name",
                        "address", "age" }, new int[] { R.id.textView1,
                        R.id.textView2, R.id.textView3 });
                mListView.setAdapter(_Adapter);
            } catch (Exception e) {
                Toast.makeText(MainActivity.this, "解析失败", 2000).show();
                Log.i(TAG, e.toString());
            }
        }
    }
}

Android读取本地json文件的方法

本文实例讲述了Android读取本地json文件的方法。分享给大家供大家参考,具体如下:

1、读取本地JSON ,但是显示汉字乱码

public static String readLocalJson(Context context, String fileName) {
    String jsonString = "";
    String resultString = "";
    try {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(
                context.getResources().getAssets().open(fileName)));
        while ((jsonString = bufferedReader.readLine()) != null) {
            resultString += jsonString;
        }
    } catch (Exception e) {
        // TODO: handle exception
    }
    return resultString;
}

2、读取本地JSON,显示汉字正确,txt文件设置时UTF-8,UNIX

public static String readLocalJson(Context context, String fileName) {
    String jsonString = "";
    String resultString = "";
    try {
        InputStream inputStream = context.getResources().getAssets().open(fileName);
        byte[] buffer = new byte[inputStream.available()];
        inputStream.read(buffer);
        resultString = new String(buffer, "GB2312");
    } catch (Exception e) {
        // TODO: handle exception
    }
    return resultString;
}