解析json(Java解析json)
本篇文章给大家谈谈解析json,以及Java解析json对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
解析json是什么意思
JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。
简洁和清晰的层次结构使得 JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
扩展资料:
任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且碰局源常用的两种类型。
对象:对象在 JS 中是使用花括号包裹 {} 起来的内容,数据结构为 {key1:value1, key2:value2, ...} 的键值对结构。在面向对象的语言中笑态,key 为对象的属性,value 为对应的值。键名可以使用整数和字符串来表示。值的类型可以是任意类型。
参考腊唯资料来源:
百度百科-JSON
[img]关于解析各种复杂json
def dict_generator(indict, pre=None):
pre = pre[:] if pre else []
if isinstance(indict, dict):
for key, value in indict.items():
if isinstance(value, dict):
if len(value) == 0:
顷肆 yield pre + [key, '{}']
else:
for d in dict_generator(value, pre + [key]):
yield d
elif isinstance(value, list):
if len(value) == 0:
yield pre + [key, '[]']
else:
for v in value:
雀斗轿 for d in dict_generator(v, pre + [key]):
yield d
elif isinstance(value, tuple):
if len(value) == 0:
yield pre + [key, '()']
else:
for v in value:
for d in dict_generator(v, pre + [key]):
yield d
else:
yield pre + [key, value]
else:
yield indict
def print_keyvalue_by_key(input_json, key):
key_value = ""
if isinstance(input_json, dict):
for json_result in input_json.values():
if key in input_json.keys():
key_value = input_json.get(key)
else:
print_keyvalue_by_key(json_result, key)
elif isinstance(input_json, list):
for json_array in input_json:
print_keyvalue_by_key(json_array, key)
if key_value != "":
for value in key_value:
if "contents" == key:
s = value[:-1].lstrip("[")
json_loads = json.loads(s)
json_dumps = json.dumps(json_loads)
销兄 return json_dumps
else:
list_add.append(value)
return list_add
def get_all_field(data,key,params_key):
"""递归解析json
:param data: json数据
:return: key的值和params_key的值"""
if isinstance(data,dict):
for k, vin data.items():
if key == kand params_key in data:
yield v,data[params_key]
elif k !=params_key:
for a, bin get_all_field(v,key,params_key):
yield a, b
elif isinstance(data,list):
for v in data:
for a, b in get_all_field(v,key,params_key):
yield a, b
if __name__ =='__main__':
for a,b in get_all_field(json, filed,param):
print(a,b)
json的解析
var obj = {
"info": {
判哪 "success": true,
"code": null,
"error": 埋型null
},
"data": [{
"id": 1,
"name": "测试用户",
"loginName": "test",
"password": "test",
"mobile1": null,
"mobile2": null,
"telephone": null,
"email": null,
"gender": null,
"address": null,
"removed": 0
}, {
"id": 21,
"name": "研发团队测试",
"loginName": "testTWW",
"password": "testTWW",
"mobile1": null,
"mobile2": null,
"telephone": null,
"email": null,
"gender": null,
"address": null,
"removed": 0
掘液码 }]
};
var data = obj["data"];
Java解析json数据
一、 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 ListPerson getPersons(String jsonStr)
{
ListPerson list = new ArrayListPerson();
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;
}
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 提供的穗伍核方法
示例:
关于解析json和Java解析json的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。