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

Java解析json数据

发布网友 发布时间:2022-04-22 06:52

我来回答

6个回答

热心网友 时间:2022-04-15 00:12

一、 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官网下载:http://json-lib.sourceforge.net/)

然后将数据转为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;
}

热心网友 时间:2022-04-15 01:30

先给json转化成json对象 然后直接就可以取啦 比如拿江苏 直接obj.response.data.province就可以啦

热心网友 时间:2022-04-15 03:05

下个json的jar包
import com.google.gson.Gson;
public class T {
public static void main(String[] args) {
String a = "{\"response\":{\"data\":[{\"address\":\"南京市游乐园\",\"province\":\"江苏\",\"district\":\"玄武区\",\"city\":\"南京\"}]},\"status\":\"ok\"}";
Gson gson = new Gson();
C b = gson.fromJson(a, C.class);
System.out.println(b.response.data.get(0).address);
System.out.println(b.response.data.get(0).province);
System.out.println(b.response.data.get(0).district);
System.out.println(b.response.data.get(0).city);
}
}
class C {
D response = new D(new B());
String status;
}
class D {
List<B> data = new ArrayList<B>();
public D() {
}
public D(B b) {
data.add(b);
}
}
class B {
String address;
String province;
String district;
String city;
@Override
public String toString() {
return address;
}
}

热心网友 时间:2022-04-15 04:56

JSONObject dataJson=new JSONObject("你的Json数据“);
JSONObject response=dataJson.getJSONObject("response");
JSONArray data=response.getJSONArray("data");
JSONObject info=data.getJSONObject(0);
String province=info.getString("province");
String city=info.getString("city");
String district=info.getString("district");
String address=info.getString("address");
System.out.println(province+city+district+address);

热心网友 时间:2022-04-15 07:04

http://blog.csdn.net/u012975370/article/details/46981823

热心网友 时间:2022-04-15 09:29

JSONArray array = JSONArray.fromObject(你的json对象); for(int i = 0; i < array.size(); i++){
JSONObject jsonObject = array.getJSONObject(i);
System.out.println(jsonObject.get("province"));
System.out.println(jsonObject.get("city"));
System.out.println(jsonObject.get("district"));
System.out.println(jsonObject.get("address"));
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 在手机上怎样装二胡定音器下载到手机上? 二胡电子调音器怎么使用? 二胡调音器软件怎么用? 二胡如何调音? 二胡调音器如何使用? 二胡调音器怎么用 我从手机下了一个二胡调音器不会用 血糖餐前餐后标准是多少 餐前和餐后血糖哪个更重要 正常的餐前、餐后、空腹及临睡前的血糖值是多少? 餐前餐后哪个血糖重要 吃水果有讲究 是餐前还是餐后? 到底是餐前吃水果好还是餐后吃水果好? 餐前和餐后俩小时的具体血糖值是多少呢 餐前餐后血糖值会一样高吗 成人餐前餐后的正常血糖值范围 餐前或餐后至少2小时 胰岛素餐前和餐后打有什么区别? 饭后多久算是空腹呢? 餐前餐后是什么时问 手机二胡调音器怎么用 二胡调音器怎么用视频 怎样在手机上下载二胡调音器 二胡定音器下载安装到手机上使用如何选择和安装 问一下,二胡的调音器怎么用? 苹果8P一用力按指纹键屏幕就会出现彩色痕迹,像漏夜,不按指纹键屏幕正常_问一问 在美团充了话费左上角写的是哪些字? 美团专送送话费是自己的嘛 美团专送话费补贴,车补,房补怎么算的 美团庆祝5周年送话费真的吗? 美团网上有免费送苹果手机是骗人的吗? 美团0.99充值完话费订单显示什么? 铬钒合金钢的硬度是多少 铬钒合金钢和铬钼合金钢的区别在哪,硬度哪个更好? 世达工具用的铬钒钢的硬度是多少 螺丝刀s2钢和铬钒钢哪种好,硬度高韧性都强,刀头耐用 铬钒钢和道轨钢哪个硬度高? CR-V合金钢与铬钒钢与铬钼钢有什么不同? 铬镍钢钳子和铬钒钢钳子有什么区别哪个好 铬钒钢与铬钼钢哪个硬