导航:首页 > 操作系统 > android读取本地json

android读取本地json

发布时间:2023-02-12 07:48:51

android 中解析 JSON

JSON( javaScript Object Notation ) 是一种轻量级的数据交换格式。易于阅读和编写,同时也易于机器解析和生成。

JSON 建构于两种结构:

JSON 具有以下这些格式:

参考: Android 中 解析 JSON

Android 提供类四种不同的类来操作 JSON 数据。这些类是 JSONArray、JSONObject、JSONStringer 和 JSONTokenizer

为了解析 JSON 对象,须先创建一个 JSONObject 类的对象,需要传入需解析的字符串 JSONObject root = new JSONObject(candyJson); 然后根据 JSONObject 对象提供方法以及数据类型解析对应 json 数据。下表展示一些 JSONObiect 提供的方法

示例:

② Android 如何引用本地json文件

有时候遇到要一些模拟数据的时候,要么写个List<T>,要么写死.

然后数据比较多的时候可以引用本地资源文件,记录下如何使用本地json文件

<1>在java同级目录下创建"assets"资源文件夹

<2>编辑json文本内容
至于json文件夹内容 就自定义了,想要什么内容写什么,对于一个做项目多了的开发者而言 json数据是熟悉到不能再熟悉的了
以下是我在淘宝一个个复制过来自己拼装的一些商品数据

不需要加任何标识,只需要标准的json数据格式就可以了

<3>引用和json解析的工具类,解析用的 Gson也是经常用到的

<4>最后在需要的地方引用,"ExchangeBean"是根据json内容写的一个模型,用于接收存放数据

有时间再补上demo,下面是效果图:

③ android使用JSON遇到的坑(1)

最近在开发的过程中遇到一个问题,服务端返回了一个JSON对象,在用JSON库解析的时候出现了一个诡异的问题
服务端返回的原始JSON是

在程序中直接调用JSON中的方法

打印的日志如下

通过JSON的方法取到的结果出现了不一致的情况。应该是转换的时候精度出现了损失,一步一步跟到内部的实现方法,先看optLong()

这里调用了两个参数的optLong()方法,在不传默认值的时候如果出错的话这个方法会返回0。再往里跟,这个方法内部调用了JSON.toLong()方法。

接着向里面走

看来问题是出在这里了,当输入的参数为String的时候,toLong()方法会使用Double.parseDouble()方法解析,而我们知道double的精度是会有损失的,在 Google的文档 上有这么一句话

在取非常大的数字的时候,会先转换成String,再通过parseDouble()方法转成long,这期间就造成了精度损失。

先得到String类型的值,再将String转成long

这样就可以正确的取到值了,Long.valueOf()内部实现调用了BigInteger中的方法,这样就能保证结果正确了。

④ 跪求 一个Android 读取SD卡里的 json 文件的解析,要完整代码

{

privatestaticfinalStringPATH=Environment.getExternalStorageDirectory()+"/123.json";
privateandroid.widget.TextViewjsonTv;

@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.jsonTv=(TextView)findViewById(R.id.jsonTv);
newThread(){
@Override
publicvoidrun(){

Messagemsg=handler.obtainMessage();
msg.obj=getFileFromSD(PATH);
msg.what=1;
handler.sendMessage(msg);
}
}.start();
}

privateHandlerhandler=newHandler(){
@Override
publicvoidhandleMessage(Messagemsg){
if(msg.what==1){
Stringresult=(String)msg.obj;
try{
JSONObjectjObj=newJSONObject(result);
jsonTv.setText("name:"+jObj.getString("name")+",age:"+jObj.getInt("age"));
}catch(JSONExceptione){
e.printStackTrace();
}
}

}
};

privateStringgetFileFromSD(Stringpath){
Stringresult="";

try{
FileInputStreamf=newFileInputStream(path);
BufferedReaderbis=newBufferedReader(newInputStreamReader(f));
Stringline="";
while((line=bis.readLine())!=null){
result+=line;
}
}catch(Exceptione){
e.printStackTrace();
}
returnresult;

}


}
<RelativeLayoutxmlns:android="

xmlns:tools="

android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity">

<TextView
android:id="@+id/jsonTv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>

</RelativeLayout>

最后,记得在AndroidMenifest文件中加入权限

<uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE"/>

123.json的内容

{"name":"rock","age":20}

⑤ android中解析json数据的org.json包中最重要

android中解析json数据的org.json包中最重要的是jsonarray。
jsonarray主要是解析json数据,因此四最重要的。
Android是一种基于Linux的自由及开放源代码的操作系统。主要使用于移动设备,如智能手机和平板电脑。

⑥ 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;}

⑦ 利用Github保存json文件在Android端接收使用

1.自己注册好GitHub,创建仓库等等。
2.新建一个文本文件,输入要保存的数据,比如

然后保存,然后修改后缀名,其它后缀名应该也可以,我这里修改为.js文件
3.用Git该文件提交到GitHub,比如我的提交到HdyLove/Json/article.js,然后输入地址类似 https://qiusunshine.github.io/HdyLove/Json/article.js 即可访问相应的地址,具体用户名,仓库名修改为自己的就可以了。

我是使用Volley+Glide使用的,Volley的JsonObjectRequest可以将该网址内容解析为json格式,用AndroidStudio自带的Json处理方法即可处理

⑧ android 用JSON 解析数据接口方法

接口获取下来的数据为

{"status":200,"message":"查询成功","data":{"id":32,"user_id":null,"user_code":null,"user_pass":null,"meeting_id":"1","meeting_pass":null,"config_param_ip":"11.1.1.70","port":"6501","web_config_param_ip":"11.1.1.70","web_port":"6501","unit_code":null,"create_time":null,"update_time":null,"status":0,"userCode":"video1","userPass":"video1","meetingId":"1","meetingPass":"","apiPort":"13000","username":"admin","password":"123456","updateTime":"2021-11-08 17:45:29"}}

使用方法

try {

    JSONObject jsonObject = new JSONObject(outstring);

    int resultCode = jsonObject.getInt("status");

    if (resultCode == 200) {

        JSONObject obj = jsonObject.getJSONObject("data");

        IP = obj.getString("config_param_ip");

        port = obj.getString("web_port");

        username = obj.getString("userCode");

        password = obj.getString("userPass");

        roomID = Integer.parseInt(obj.getString("meetingId"));

        roomPassword = obj.getString("password");

    } else {

        ToastUtils.showShort("查询失败");

    }

    goVideo();

} catch (Exception e) {

    e.printStackTrace();

}

阅读全文

与android读取本地json相关的资料

热点内容
数控铣床编程简单数字 浏览:786
编程电缆如何重启 浏览:121
myqq命令行发消息 浏览:365
日产逍客怎么使用app升窗 浏览:503
安卓系统怎么快速删除微信内容 浏览:653
csharppython 浏览:409
程序员脖子按摩仪 浏览:562
小米桌面文件夹乱码怎么回事 浏览:858
点歌台app怎么连接 浏览:318
大学电脑编程学什么好 浏览:348
上哪里取消应用加密 浏览:172
电气控制与可编程控制器pdf 浏览:87
cad图纸不能跨文件夹粘贴 浏览:256
学生云服务器主机 浏览:889
单片机状态周期 浏览:622
lua中的android 浏览:443
加密贵还是植发贵 浏览:664
阳光压缩机继电器 浏览:971
修改阿里云服务器密码 浏览:817
lk4102加密芯片 浏览:588