精华内容
下载资源
问答
  • 读写Json文件也是常用的操作。这次来实践一下Json文件的读写。首先在SD卡上的读写权限是一定要申请的。那么还是老办法,在 AndroidManifest.xml 文件中添加 这在android 6.0 以下的系统就足够了。6.0及以上的更新的...

    Json格式是常见的读写形式。读写Json文件也是常用的操作。

    这次来实践一下Json文件的读写。

    首先在SD卡上的读写权限是一定要申请的。那么还是老办法,在 AndroidManifest.xml 文件中添加

    这在android 6.0 以下的系统就足够了。6.0及以上的更新的系统,在代码中需要申请SD卡的读写权限。

    先来构建界面,两个按钮一个文字显示组件。

    xmlns:app="http://schemas.android.com/apk/res-auto"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical"

    tools:context="com.cofox.functions.ReadWriteJsonData.ReadWriteJsonDataActivity">

    android:id="@+id/btnSingleWJson"

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:text="独立写Json文件" />

    android:id="@+id/btnSingleRJson"

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:text="独立读JSON文件" />

    android:id="@+id/ttvwJson"

    android:layout_width="match_parent"

    android:layout_height="0dp"

    android:layout_weight="1"

    android:textSize="20sp"/>

    715603bcfdfe726bac8165cecf9ad521.png

    默认界面

    在onCreate方法中增加按钮动作

    // 独立写Json文件

    btnSingleWJson.setOnClickListener {

    }

    // 独立读Json文件

    btnSingleRJson.setOnClickListener{

    }

    写入Json文件要先判断SD卡的读写权限,没权限要申请权限,如果有权限才执行写操作。

    // 独立写Json文件

    btnSingleWJson.setOnClickListener {

    // 判断有无写SD卡的权限

    if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {

    //申请写 SD 卡的权限

    ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), COFOX_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE)

    } else {

    saveSingleJson()

    }

    }

    这其中的saveSingleJson()方法是具体的写Json的实现。

    fun saveSingleJson(){

    Toast.makeText(this, "保存独立Json文件", Toast.LENGTH_LONG).show()

    //打开要写入的json文件

    val fos = FileOutputStream(jsonFile)

    //json数据

    val products = arrayListOf()

    products.add(Product("0001", "微服务核心服务端"))

    products.add(Product("0002", "平台管理android端"))

    products.add(Product("0003", "平台管理web端"))

    products.add(Product("0004", "企业用户android端"))

    products.add(Product("0005", "终端用户wx/android/web端"))

    products.add(Product("0006", "android全功能端"))

    products.add(Product("0007", "明月端"))

    //创建JsonWrite对象

    val writer = JsonWriter(OutputStreamWriter(fos, "utf-8"))

    writer.setIndent(" ")

    writer.beginArray()

    for (product in products){

    writer.beginObject()

    writer.name("id").value(product.id)

    writer.name("name").value(product.name)

    writer.endObject()

    }

    writer.endArray()

    writer.close()

    }

    注意writer.close()不能丢失,不然你就写不到文件里了。

    代码中的Json文件保存位置存放在一个变量中

    val jsonFile = "/sdcard/cofoxtest.json"

    读取Json文件,一个对列表的记录进行循环读取,一个是对记录内的字段循环读取,两个循环嵌套。

    // 独立读Json文件

    btnSingleRJson.setOnClickListener {

    val fis = FileInputStream(jsonFile)

    var reader = JsonReader(InputStreamReader(fis,"utf-8"))

    val products = ArrayList()

    reader.beginArray()

    while (reader.hasNext()){

    var id = ""

    var name = ""

    reader.beginObject()

    while (reader.hasNext()) {

    var field = reader.nextName()

    if (field.equals("id")){

    id = reader.nextString()

    }else if (field.equals("name")){

    name = reader.nextString()

    }else{

    reader.skipValue()

    }

    }

    reader.endObject()

    products.add(Product(id, name))

    }

    reader.endArray()

    reader.close()

    if (products != null) {

    var result = ""

    for (product in products) {

    result += "id:" + product.id + " name:" + product.name + "\n"

    ttvwJson.setText(result)

    }

    }

    }

    如果是高版本的android,第一次运行,会对权限做一个判断,根据操作人的权限赋予的选择,有一个相应的系统反应。这就是权限选择结果的一个方法重写。如果同意了权限就写入,如果不同意就显示提示信息。

    override fun onRequestPermissionsResult(requestCode: Int, permissions: Array, grantResults: IntArray) {

    when (requestCode) {

    COFOX_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE -> {

    if (grantResults.size > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

    saveSingleJson()

    } else {

    Toast.makeText(this, "您拒绝了写入", Toast.LENGTH_LONG).show()

    }

    }

    }

    }

    485cc6ea889f4a95550ff1ad1efee70a.png

    界面

    6ce364af7842df5a11b8317e941cb0ce.png

    保存Json

    108cdcc5f7d4c3b9faefc1381e9650b3.png

    生成文件

    ffb57e693a331b283143c16c41e7ba6d.png

    显示Json

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持找一找教程网。

    展开全文
  • 我正在创建一个Android应用程序,该应用程序应将Json文件或URL解析为jsonarray和jsonobjects。问题是我的json是3.3mb,当我使用一个简单的代码时,是这样的:(现在无法访问我的真实代码,因为我正在工作,从教程中...

    我正在创建一个Android应用程序,该应用程序应将Json从文件或URL解析为jsonarray和jsonobjects。问题是我的json是3.3

    mb,当我使用一个简单的代码时,是这样的:(现在无法访问我的真实代码,因为我正在工作,从教程中复制了一些代码;因此其中可能有一些错误)

    (假设我已经有我的输入流内容)

    InputStream content = entity.getContent();

    BufferedReader reader = new BufferedReader(new InputStreamReader(content));

    String line;

    while ((line = reader.readLine()) != null) {

    builder.append(line);

    String twitterfeed = builder.toString();

    }

    JSONArray jsonArray = new JSONArray(twittefeed);

    Log.i(ParseJSON.class.getName(),

    "Number of entries " + jsonArray.length());

    for (int i = 0; i < jsonArray.length(); i++) {

    JSONObject jsonObject = jsonArray.getJSONObject(i);

    Log.i(ParseJSON.class.getName(), jsonObject.getString("text"));

    当我在Android设备上运行此代码时,将字符串解析为jsonArray时出现OutOfMemory错误。我记录了一些东西,发现我的总字符串是17

    mb(一个3.3 mb的json文件?!),当我使用一个小的json文件(例如twitterfeed左右)时,代码可以正常工作。当我的内存中有这个17

    mb的字符串时,我无法解析json,因为那样我就用光了内存。

    经过大量研究,我发现杰克逊可能是我的解决方案,因为我知道可以解析输入流。这应该有所帮助,因为比起我,我的内存中不需要17

    mb的字符串;但这并不是我猜出的最有效的方法。。。。但是我无法弄清楚这确实可行,也没有让它自己运行。有谁知道这确实可行,在哪里可以找到教程?

    展开全文
  • android 解析json文件

    2021-06-04 02:28:09
    引用:就是一段JSON格式的数据,不是数组,还需要返回result节点下的信息吗?给你个例子:这是本人的json串{“product”:{“id”:652,“name”:“商品名字”,//商品名称“image”:...

    引用:

    就是一段JSON格式的数据,不是数组,还需要返回result节点下的信息吗?

    给你个例子:

    这是本人的json串

    {

    “product”: {

    “id”: 652,

    “name”: “商品名字”,// 商品名称

    “image”: “http://pic.qiantucdn.com/uploadfilepic/yuanwenjian/2009-07-31/58PIC_hackchong_200907317400155424fa0c68.jpg”,//商品图片地址

    “code”: “11110”,//商品编码

    “barCode”: “12345678900123456787”,//商品条形码

    “status”: 1,    //状态 1存在 0删除

    “groupId”: 268, //分组ID

    “standard”: “规格型号”,//规格型号

    “costPrice”: 0,//成本价

    “salePrice”: 22.11,//销售价

    “inventory”: 0,//库存

    “shopId”: 163,//店铺ID

    “userId”: 170,//用户ID

    “customDescription”: “”,//自定义信息

    “createtime”: “2016-09-14 14:11:19”,

    “updatetime”: “2016-09-14 14:11:19”

    },

    “statusMsg”: “OK”,

    “statusDes”: “SUCCESS”,

    “status”: 1,

    “nowTime”: “2016-09-18 14:16:07”

    }

    解析:

    /**

    * 解析根据商品条码搜索得到的商品信息

    * @param response

    * @return

    */

    public Map parseProductSearchByBar(String data) {

    Map map = new HashMap();

    JSONObject jsonObject;

    JSONObject jsonObject1;

    try {

    jsonObject = new JSONObject(data);

    jsonObject1 = jsonObject.getJSONObject(“product”);

    map.put(“status”, jsonObject.getString(“status”));

    map.put(“statusMsg”, jsonObject.getString(“statusMsg”));

    map.put(“product”, jsonObject1);

    } catch (JSONException e) {

    e.printStackTrace();

    }

    return map;

    }

    展开全文
  • Android读取本地json文件的方法本文实例讲述了Android读取本地json文件的方法。分享给大家供大家参考,具体如下:1、读取本地JSON ,但是显示汉字乱码public static String readLocalJson(Context context, String ...

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

    【Android读取本地json文件的方法】相关文章:

    展开全文
  • 在我们的开发过程中,我们通常会访问assets本地json文件,那么Android访问assets本地json文件的方法大家知道吗?今天爱站技术频道小编就和大家分享。目的:当App中用到固定的json数据时,如:国家城市列表、班级成员...
  • json文件到炫酷动画-Lottie实现思路和源码分析,Lottie是最近Airbnb开源的动画项目,支持Android、iOS、ReactNaitve三个平台,本文分析主要Lottie把json文件转为动画的思路和源码实现。文章首先介绍Lottie的基本...
  • 假设我的应用程序的原始资源文件夹中有一个包含JSON内容的文件。 如何将其读入应用程序,以便解析JSON?请参阅openRawResource。这样的事情应该起作用:InputStream is = getResources().openRawResource(R.raw.json...
  • package ...import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;import android.widget.Button;import android...
  • 在app module中的src/main/assets目录下我们准备了两个json文件: destination.json如下: { "main/tabs/sofa": { "isFragment": true, "asStarter": false, "needLogin": false, "pageUrl": "main/tabs/...
  • Android JSON解析和转换

    2021-06-05 02:39:43
    我想解析JSON data成一个字符串,但我认为我做错了什么:这里是部分。private void read_JSON(){String JSON;JSONObject jso3 = new JSONObject(JSON);for (int i=0; i < jso3.length(); i++){try{String name = ...
  • 我试图从我的应用程序本地存储的文件中获取JSON信息 . 我的代码收到以下错误,我想知道是否有人能够给出任何指针如何解决它 . 我也会附上错误和代码 .10-11 15:02:27.277 9184-9209 / info.androidhive....
  • android开发过程中会遇到文件存储这一块的知识!合理的设置缓存不仅可以节省用户流量,也可以在一定程度上优化app的性能、减少服务端的访问压力!通过对代码的封装,以达到对服务端返回数据的存储来实现本地缓存...
  • Android 项目中,可以把预先 JSON 数据保存在 res/raw 的目录下, 然后再通过Resources.openRawResource 读取。 Resources 对象可以通过Context 对象去获取。 public class Resources { public InputStream ...
  • 该类有一个方法调用makeJSONObject,它创建一个JSON-Object并将东西放入其中.这是该类的代码.public class CompositionJso extends JSONObject {public JSONObject makeJSONObject (String title, String desc, ...
  • 本文实例讲述了Android读取本地json文件的方法。分享给大家供大家参考,具体如下: 1、读取本地JSON ,但是显示汉字乱码 public static String readLocalJson(Context context, String fileName){ String jsonString...
  • Gson是更流行的解析json的库里,我自己一把很喜欢用Gson来解析,因为直接可以写对象和json文件相对应对于一个标准的后台返回:{"data":{"product_info":{"name":"澳斯贝贝婴儿长袖水晶绒睡袋100cm4","image":...
  • MainActivity.kt package ...android.widget.TextView import com.google.gson.Gson import com.google.gson.reflect.TypeToken import okhttp3.OkHttpClient import okhttp3.Request import org.json.JSONArray import org.xml.sax.InputSource import org.xmlpull.v1.XmlPullParser import org.xmlpull.v1.XmlPullParserFactory import java.io.StringReader import javax.xml.parsers.SAXParserFactory inline fun KTypeToken()...= object : TypeToken() {} .type class MainActivity : AppCompatActivity(), View.OnClickListener{ var responseText: TextView? = null override fun ...
  • android json解析判空

    2021-09-01 15:18:24
    "code":200,"has_next":0,"contextData":null 这里的contextData为null,解析的时候怎么判空呢: JSONObject data = new JSONObject(response); if (!data.isNull("contextData")){ doOthers();...}
  • I'm trying to parse some huge JSON file from assets folder. How can i load and add to RecyclerView. would like to know what is the best approch to parse this kind of big file (about 6MB) and if you ma...
  • 在logcat中打后台打印json数据时,json数据太过于长就会有打印不全的问题,这里记录一个办法就是分段打印:// 采用分段打印 四千字符分一段if (response.length() > 4000) {for (int i = 0; i < response....
  • 本文实例讲述了android针对json数据解析方法。分享给大家供大家参考。具体如下:JSON的定义:一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则...
  • 使用SD卡中的File读取JSON文件并使用JSONObject解析它。这里出发代码:import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;public class ReadJsonFile {public ReadFile(){try {...
  • } // End else block } PHP文件 $target_path = "./Upload/"; $target_path = $target_path . basename( $_FILES['uploadedfile']['name']); if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_...
  • 作为一个Android开发初学者,好不容易找到解决方法,跟大家分享一下,其实很简单,只要保持服务器上的文件(date2.json)与软件的编码方式一样就行。我用的Android Studio是utf-8,所以在服务器文件(date2.json)编码的...
  • 1.JSON解析(1).解析Object之一:解析方法:1JSONObject demoJson =newJSONObject(jsonString);2String url = demoJson...解析Object之二:1{"name":"android","name":"iphone"}解析方法:1JSONObject demoJson =newJSON...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 97,147
精华内容 38,858
关键字:

安卓json文件