
public class MainActivity extends ActionBarActivity {
private static final String PATH = EnvironmentgetExternalStorageDirectory() + "/123json";
private androidwidgetTextView jsonTv;
@Override
protected void onCreate(Bundle savedInstanceState) {
superonCreate(savedInstanceState);
setContentView(Rlayoutactivity_main);
thisjsonTv = (TextView) findViewById(RidjsonTv);
new Thread() {
@Override
public void run() {
Message msg = handlerobtainMessage();
msgobj = getFileFromSD(PATH);
msgwhat = 1;
handlersendMessage(msg);
}
}start();
}
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msgwhat == 1) {
String result = (String) msgobj;
try {
JSONObject jObj = new JSONObject(result);
jsonTvsetText("name:"+jObjgetString("name")+",age:"+jObjgetInt("age"));
} catch (JSONException e) {
eprintStackTrace();
}
}
}
};
private String getFileFromSD(String path) {
String result = "";
try {
FileInputStream f = new FileInputStream(path);
BufferedReader bis = new BufferedReader(new InputStreamReader(f));
String line = "";
while ((line = bisreadLine()) != null) {
result += line;
}
} catch (Exception e) {
eprintStackTrace();
}
return result;
}
}<RelativeLayout xmlns: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-permission android:name="androidpermissionREAD_EXTERNAL_STORAGE"/>123json的内容
{"name":"rock","age":20}因为这次要从服务器端得到Json数据,并且通过解析之后把解析后的数据显示在Android客户端中,首先部署服务器端代码(直接使用Jsp/Servlet):
构造的Json数据如下:
[{"name":"张三","address":"北京","age":20},{"name":"李四","address":"上海","age":30},{"name":"王五","address":"深圳","age":35}]
[一]服务器端(Personjava省略):
①:数据构造JsonServicejava
public class JsonService {
public static List<Person> getListPerson() {
List<Person> mLists = new ArrayList<Person>();
mListsadd(new Person("张三", "北京", 20));
mListsadd(new Person("李四", "上海", 30));
mListsadd(new Person("王五", "深圳", 35));
return mLists;
}
②:Servlet的代码(包括构造Json数据,没有使用Json数据转换方法)JsonServletjava
public void doGet(>
assets资源目录一般用于存放html文件、数据库文件、javascript文件,assets目录下的文件不会在Rjava自动生成ID,所以读取assets目录下的文件必须指定文件的路径
在代码中使用AssertManager获取文件的输入流读取
AssetManager assetManager = contextgetAssets();try {
InputStream is = assetManageropen("jsondata");
BufferedReader br = new BufferedReader(new InputStreamReader(is));
StringBuffer stringBuffer = new StringBuffer();
String str = null;
while((str = brreadLine())!=null){
stringBufferappend(str);
}
} catch (IOException e) {
eprintStackTrace();
}
也可以把json文件放在res的raw目录下
res/raw中的文件会被映射到Rjava文件中,访问的时候直接使用资源ID即Ridfilename;
但是需要注意的是assets允许有目录结构,而raw不行
读取方法大同小异
try {InputStream is = getResources()openRawResource(Ridfile);
BufferedReader br = new BufferedReader(new InputStreamReader(is));
StringBuffer stringBuffer = new StringBuffer();
String str = null;
while((str = brreadLine())!=null){
stringBufferappend(str);
}
} catch (IOException e) {
eprintStackTrace();
}
//这种要用post方式了,//将json数据以字符串的方式上传给服务器,//当然你要确保json格式的正确性,如果数据很少的话,可以手动拼装json字符串,//否则就要弄json对象生成//我们项目中也有这个需求,但是数据并不多,我就手动拼装的String json
使用守则
首先,我们要创建Web服务,从MySQL数据库中读取数据。
<php
<pre>/ require the user as the parameter /
<pre>//>
以上就是关于跪求 一个Android 读取SD卡里的 json 文件的解析,要完整代码全部的内容,包括:跪求 一个Android 读取SD卡里的 json 文件的解析,要完整代码、android 在服务器端生成json格式数据,在客户端怎么解析、android加载assets中的json格式文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)