php抓取网页json数据( javajar修改servletjava代码代码使用方法代码详解)
优采云 发布时间: 2021-10-30 22:15php抓取网页json数据(
javajar修改servletjava代码代码使用方法代码详解)
JS中Json数据的处理和解析JSON数据的方法详解
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于 ECMAScript 的一个子集。JSON 使用完全独立于语言的文本格式,但也使用类似于 C 语言家族(包括 C、C++、C#、Java、JavaScript、Perl、Python 等)的习惯。这些特性使 JSON 成为一种理想的数据交换语言。便于人读写,也便于机器解析生成(通常用于提高网络传输速率)。
JSON 的规则很简单:对象是“名称/值对”的无序集合。对象以“{”(左括号)开头,以“}”(右括号)结尾。每个“名称”后跟一个“:”(冒号);“'name/value' 对”由“,”(逗号)分隔。具体细节参考
举个简单的例子:
js代码
function showJSON() {
var user =
{
"username":"andy",
"age":20,
"info": { "tel": "123456", "cellphone": "98765"},
"address":
[
{"city":"beijing","postcode":"222333"},
{"city":"newyork","postcode":"555666"}
]
}
alert(user.username);
alert(user.age);
alert(user.info.cellphone);
alert(user.address[0].city);
alert(user.address[0].postcode);
}
这表示具有用户名、年龄、信息、地址等属性的用户对象。
也可以用JSON简单的修改数据,修改上面的例子
js代码
function showJSON() {
var user =
{
"username":"andy",
"age":20,
"info": { "tel": "123456", "cellphone": "98765"},
"address":
[
{"city":"beijing","postcode":"222333"},
{"city":"newyork","postcode":"555666"}
]
}
alert(user.username);
alert(user.age);
alert(user.info.cellphone);
alert(user.address[0].city);
alert(user.address[0].postcode);
user.username = "Tom";
alert(user.username);
}
JSON 提供了 json.js 包。下载后,导入它,然后简单地使用 object.toJSONString() 将其转换为 JSON 数据。
js代码
function showCar() {
var carr = new Car("Dodge", "Coronet R/T", 1968, "yellow");
alert(carr.toJSONString());
}
function Car(make, model, year, color) {
this.make = make;
this.model = model;
this.year = year;
this.color = color;
}
您可以使用 eval 将 JSON 字符转换为 Object
js代码
function myEval() {
var str = '{ "name": "Violet", "occupation": "character" }';
var obj = eval('(' + str + ')');
alert(obj.toJSONString());
}
或者使用 parseJSON() 方法
js代码
function myEval() {
var str = '{ "name": "Violet", "occupation": "character" }';
var obj = str.parseJSON();
alert(obj.toJSONString());
}
下面用prototype写一个JSON ajax例子。
先写一个servlet(我的是servlet.ajax.JSONTest1.java),写一句
代码
response.getWriter().print("{ \"name\": \"Violet\", \"occupation\": \"character\" }");
在页面中写一个ajax请求
js代码
function sendRequest() {
var url = "/MyWebApp/JSONTest1";
var mailAjax = new Ajax.Request(
url,
{
method: 'get',
onComplete: jsonResponse
}
);
}
function jsonResponse(originalRequest) {
alert(originalRequest.responseText);
var myobj = originalRequest.responseText.parseJSON();
alert(myobj.name);
}
Prototype-1.5.1.js 提供了JSON方法,String.evalJSON(),不使用json.js也可以修改上面的方法
js代码
function jsonResponse(originalRequest) {
alert(originalRequest.responseText);
var myobj = originalRequest.responseText.evalJSON(true);
alert(myobj.name);
}
JSON也提供了java jar包API也很简单,这里举个例子
在javascript中填写请求参数
js代码
function sendRequest() {
var carr = new Car("Dodge", "Coronet R/T", 1968, "yellow");
var pars = "car=" + carr.toJSONString();
var url = "/MyWebApp/JSONTest1";
var mailAjax = new Ajax.Request(
url,
{
method: 'get',
parameters: pars,
onComplete: jsonResponse
}
);
}
使用JSON请求字符串,可以简单的生成解析JSONObject,修改servlet添加JSON处理(使用json.jar)
代码
private void doService(HttpServletRequest request, HttpServletResponse response) throws IOException {
String s3 = request.getParameter("car");
try {
JSONObject jsonObj = new JSONObject(s3);
System.out.println(jsonObj.getString("model"));
System.out.println(jsonObj.getInt("year"));
} catch (JSONException e) {
e.printStackTrace();
}
response.getWriter().print("{ \"name\": \"Violet\", \"occupation\": \"character\" }");
}
您还可以使用 JSONObject 生成 JSON 字符串和修改 servlet
代码
private void doService(HttpServletRequest request, HttpServletResponse response) throws IOException {
String s3 = request.getParameter("car");
try {
JSONObject jsonObj = new JSONObject(s3);
System.out.println(jsonObj.getString("model"));
System.out.println(jsonObj.getInt("year"));
} catch (JSONException e) {
e.printStackTrace();
}
JSONObject resultJSON = new JSONObject();
try {
resultJSON.append("name", "Violet")
.append("occupation", "developer")
.append("age", new Integer(22));
System.out.println(resultJSON.toString());
} catch (JSONException e) {
e.printStackTrace();
}
response.getWriter().print(resultJSON.toString());
}
js代码
function jsonResponse(originalRequest) {
alert(originalRequest.responseText);
var myobj = originalRequest.responseText.evalJSON(true);
alert(myobj.name);
alert(myobj.age);
}
下面重点介绍JS中json数据的处理
1、 json 数据结构(对象和数组)
json 对象:var obj = {"name":"xiao","age":12};
json 数组:var objArray = [{"name":"xiao","age":12},{"name":"xiao","age":12}];
2、 处理json数据,依赖文件为:jQuery.js
3、注:在数据传输过程中,json数据以文本形式存在,即字符串格式;
JS 语言操作 JS 对象;
所以json字符串和JS对象的转换是关键;
4、数据格式
json字符串:var json_str ='{"name":"xiao","age":12}';
Josn 对象:var obj = {"name":"xiao","age":12};
JS对象:对象{名称:“xiao”,年龄:12}
5、类型转换
Json字符串——>JS对象,使用方法:
笔记:
json_str 和 obj 代表本文副标题 4 中的数据类型;
obj = JSON.parse(json_str);
obj = jQuery.parseJSON(json_str);
注意:如果传入格式错误的json字符串(例如:'{name:"xiao",age:12}'),会抛出异常;
Json 字符串格式,严格格式:'{"name":"xiao","age":12}'
JS 对象 -> Json 字符串:
json_str = JSON。字符串化(对象);
笔记:
1、eval()是JS原生函数,使用这种形式:eval('('+'{name:"xiao",age:12}'+')'),不安全,不能保证类型转换是一个JS对象;
2、 以上3种方法均已通过chrome浏览器测试,以下为测试结果截图;
Json 字符串 -> JS 对象;
JS 对象 -> Json 字符串: