问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

解析json的数据

发布网友 发布时间:2022-04-24 13:52

我来回答

1个回答

热心网友 时间:2022-04-27 09:51

一、 JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧。
Json建构于两种结构:
1、“名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。 如:
{
“name”:”jackson”,
“age”:100
}

2、值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)如:
{
“students”:
[
{“name”:”jackson”,“age”:100},
{“name”:”michael”,”age”:51}
]
}
二、java解析JSON步骤
A、服务器端将数据转换成json字符串
首先、服务器端项目要导入json的jar包和json所依赖的jar包至builtPath路径下(这些可以到JSON-lib官网下载:)

然后将数据转为json字符串,核心函数是:
public static String createJsonString(String key, Object value)
{
JSONObject jsonObject = new JSONObject();
jsonObject.put(key, value);
return jsonObject.toString();
}
B、客户端将json字符串转换为相应的javaBean
1、客户端获取json字符串(因为android项目中已经集成了json的jar包所以这里无需导入)
public class HttpUtil
{

public static String getJsonContent(String urlStr)
{
try
{// 获取HttpURLConnection连接对象
URL url = new URL(urlStr);
HttpURLConnection httpConn = (HttpURLConnection) url
.openConnection();
// 设置连接属性
httpConn.setConnectTimeout(3000);
httpConn.setDoInput(true);
httpConn.setRequestMethod("GET");
// 获取相应码
int respCode = httpConn.getResponseCode();
if (respCode == 200)
{
return ConvertStream2Json(httpConn.getInputStream());
}
}
catch (MalformedURLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return "";
}

private static String ConvertStream2Json(InputStream inputStream)
{
String jsonStr = "";
// ByteArrayOutputStream相当于内存输出流
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
// 将输入流转移到内存输出流中
try
{
while ((len = inputStream.read(buffer, 0, buffer.length)) != -1)
{
out.write(buffer, 0, len);
}
// 将内存流转换为字符串
jsonStr = new String(out.toByteArray());
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return jsonStr;
}
}
2、获取javaBean
public static Person getPerson(String jsonStr)
{
Person person = new Person();
try
{// 将json字符串转换为json对象
JSONObject jsonObj = new JSONObject(jsonStr);
// 得到指定json key对象的value对象
JSONObject personObj = jsonObj.getJSONObject("person");
// 获取之对象的所有属性
person.setId(personObj.getInt("id"));
person.setName(personObj.getString("name"));
person.setAddress(personObj.getString("address"));
}
catch (JSONException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}

return person;
}

public static List<Person> getPersons(String jsonStr)
{
List<Person> list = new ArrayList<Person>();

JSONObject jsonObj;
try
{// 将json字符串转换为json对象
jsonObj = new JSONObject(jsonStr);
// 得到指定json key对象的value对象
JSONArray personList = jsonObj.getJSONArray("persons");
// 遍历jsonArray
for (int i = 0; i < personList.length(); i++)
{
// 获取每一个json对象
JSONObject jsonItem = personList.getJSONObject(i);
// 获取每一个json对象的值
Person person = new Person();
person.setId(jsonItem.getInt("id"));
person.setName(jsonItem.getString("name"));
person.setAddress(jsonItem.getString("address"));
list.add(person);
}
}
catch (JSONException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}

return list;
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
vivo y3t手机能拨打和接听电话,不能收发短信 vivoy3t手机突然接收不到短信 vivoy3短信消息怎么提醒 无奈什么意思是什么 怎样让炒出的丝瓜不发黑? 钟表是以什么计量时间 钟表以( )、()、( )计量时间。 钟表以( )、()、( )单位计量时间 紫荆花开放时间 《青春 须臾成殇》渭伊的txt全集下载地址 返回json格式的数据怎么处理 怎么处理传递过来的json数据 为什么华为手机插着耳机时,耳机和手机都有声音? 为什么华为手机的耳机插到底部声音就变小 华为手机耳机音量调到最小还是很大怎么办( 华为耳机声音小 华为无线耳机声音小怎么办 华为荣耀play5t为什么插上耳机说话声音很小 华为freelace一边耳机声音小? 华为mate30原装耳机声音一大一小,左耳音量比右耳音量小这是怎么回事? MacBook Pro15双系统可以下载破解版的3D软件吗? 已安装双系统后如何只重装mac系统? 苹果笔记本macbook pro2016安装双系统后win10系统下没有蓝牙 黑苹果教程MacOS Mojave安装 clover引导 windows+Mac双系统教学 macbook air 是否需要装双系统? 安装mac 10.14 Mojave beta影响双系统吗 BootP是什么协议~~ 急。。。求以前一部常播动画:其中有一人物叫太空巫师 小时候看的一部动画片是一个小女孩抵抗一拿着一个眼珠子巫师的故事 国产的 求片名!!!! 有土著人的动画片,有一个是巫师 请问怎么把vivox3t手机自带相机拍摄的视频转换成mp4格式 jQuery处理json数据返回数组和输出的方法 dhcp和bootp的区别 html 怎么解析json数据 如何解析返回的json格式数据 JS解析json数据(怎么把json字符串转化为数 jquery处理json数据 怎么处理一个html网页的json数据 安卓 从网上获取的json数据如何处理 关于易语言的json数据处理 Visual Studio 2013 vb 怎么处理JSON数据 富士x100f如何拍星空? 富士x100f好吗 富士x100f拍照会模糊吗,拍近景人像能达到放大数毛程度吗?全开光圈非近距离还肉吗? x100f怎么样,画质好吗 富士X100T和PEN-F怎么选? 富士x100f 数码相机是什么画幅 富士X100F可以用64G卡吗 富士X100的一些问题 富士X100F和XE3的区别?