日志——JSON的相关方法
http://www.cnblogs.com/henryxu/archive/2013/03/10/2952738.html
JSON jar包:
- commons-lang.jar
- commons-beanutils.jar
- commons-collections.jar
- commons-logging.jar
- ezmorph.jar
- json-lib-2.2.2-jdk15.jar
/**
* 从json数组中得到相应java数组
* JSONArray下的toArray()方法的使用
* @param str
* @return
*/
public static Object[] getJsonToArray(String str) {
JSONArray jsonArray = JSONArray.fromObject(str);
return jsonArray.toArray();
} public static void main(String[] args) {
JSONArray jsonStrs = new JSONArray();
jsonStrs.add(0, "cat");
jsonStrs.add(1, "dog");
jsonStrs.add(2, "bird");
jsonStrs.add(3, "duck"); Object[] obj=getJsonToArray(jsonStrs.toString());
for(int i=0;i<obj.length;i++){
System.out.println(obj[i]);
}
}
package jsontest; import net.sf.json.JSONArray;
import net.sf.json.JSONObject; public class JSONObjectSample { // 创建JSONObject对象
private static JSONObject createJSONObject() {
JSONObject jsonObject = new JSONObject();
jsonObject.put("username", "huangwuyi");
jsonObject.put("sex", "男");
jsonObject.put("QQ", "413425430");
jsonObject.put("Min.score", new Integer(99));
jsonObject.put("nickname", "梦中心境");
return jsonObject;
} public static void main(String[] args) {
JSONObject jsonObject = JSONObjectSample.createJSONObject();//静待方法,直接通过类名+方法调用
// 输出jsonobject对象
System.out.println("jsonObject:" + jsonObject); // 判读输出对象的类型
boolean isArray = jsonObject.isArray();
boolean isEmpty = jsonObject.isEmpty();
boolean isNullObject = jsonObject.isNullObject();
System.out.println("是否为数组:" + isArray + ", 是否为空:" + isEmpty
+ ", isNullObject:" + isNullObject); // 添加属性,在jsonObject后面追加元素。
jsonObject.element("address", "福建省厦门市");
System.out.println("添加属性后的对象:" + jsonObject); // 返回一个JSONArray对象
JSONArray jsonArray = new JSONArray();
jsonArray.add(0, "this is a jsonArray value");
jsonArray.add(1, "another jsonArray value");
jsonObject.element("jsonArray", jsonArray);
//在jsonObject后面追加一个jsonArray
JSONArray array = jsonObject.getJSONArray("jsonArray");
System.out.println(jsonObject); System.out.println("返回一个JSONArray对象:" + array);
// 添加JSONArray后的值
// {"username":"huangwuyi","sex":"男","QQ":"413425430","Min.score":99,"nickname":"梦中心境","address":"福建省厦门市","jsonArray":["this is a jsonArray value","another jsonArray value"]}
System.out.println("结果=" + jsonObject); // 根据key返回一个字符串
String username = jsonObject.getString("username");
System.out.println("username==>" + username); // 把字符转换为 JSONObject
String temp = jsonObject.toString();
JSONObject object = JSONObject.fromObject(temp);
// 转换后根据Key返回值
System.out.println("qq=" + object.get("QQ")); } }
JAVA解析JSON数据
在网页中想后台传递多个数据时,有时数据还是多个动态列表,数据很复杂时,JavaScript程序员喜欢把他们作为json串进行处理,后台收到后需要对json字符串进行解析,幸好有JSON-lib,这个Java类包用于把bean,map和XML转换成JSON并能够把JSON转回成bean和DynaBean。
下载地址:http://json-lib.sourceforge.net/
public class Test {
/**
* @param args
* @author wen
*/
public static void main(String[] args) {
// test1();
// test2();
String json = “{1:{1:{jhinfo:['计划一','亲亲宝宝','www.wenhq.com'],jhrate:['1-5:10.0','6-100:5.0/1']},2:{jhinfo:['计划二','亲亲宝宝','www.wenhq.com'],jhrate:['1-100:100.0']},3:{jhinfo:['计划三','亲亲宝宝','www.wenhq.com'],jhrate:['1-100:150.0/7']}},2:{4:{jhinfo:['年计划','亲亲宝宝','www.wenhq.com'],jhrate:['365-365:1000.0']}}}”;
try {
JSONObject jsonObject = JSONObject.fromObject(json);
String name = jsonObject.getString(“1″);
String address = jsonObject.getString(“2″);
System.out.println(“name is:” + name);
System.out.println(“address is:” + address);
Iterator it=jsonObject.keys();
while (it.hasNext()){
System.out.println(jsonObject.get(it.next()));
}
} catch (JSONException e) {
e.printStackTrace();
}
}
/**
* json对象字符串转换
* @author wen
*/
private static void test2() {
String json = “{‘name’: ‘亲亲宝宝’,'array’:[{'a':'111','b':'222','c':'333'},{},{'a':'999'}],’address’:'亲亲宝宝’}”;
try {
JSONObject jsonObject = JSONObject.fromObject(json);
String name = jsonObject.getString(“name”);
String address = jsonObject.getString(“address”);
System.out.println(“name is:” + name);
System.out.println(“address is:” + address);
JSONArray jsonArray = jsonObject.getJSONArray(“array”);
for (int i = 0; i < jsonArray.size(); i++) {
System.out.println(“item ” + i + ” :” + jsonArray.getString(i));
}
} catch (JSONException e) {
e.printStackTrace();
}
}
/**
* json数组 转换,数组以[开头
* @author wen
*/
private static void test1() {
boolean[] boolArray = new boolean[]{true,false,true};
JSONArray jsonArray1 = JSONArray.fromObject( boolArray );
System.out.println( jsonArray1 );
// prints [true,false,true]
List list = new ArrayList();
list.add( “first” );
list.add( “second” );
JSONArray jsonArray2 = JSONArray.fromObject( list );
System.out.println( jsonArray2 );
// prints ["first","second"]
JSONArray jsonArray3 = JSONArray.fromObject( “['json','is','easy']” );
System.out.println( jsonArray3 );
// prints ["json","is","easy"]
}
创建JSONArray的常用四种方法
1.从头或者从零开始,创建一个JSONArray(Creating a JSONArray from scratch)
实例1:
Java代码
JSONArray jsonArray = new JSONArray().element("JSON").element("1").element("2.0").element("true");
assertEquals("JSON", jsonArray.getString(0));
assertEquals(1, jsonArray.getInt(1));
assertEquals(2.0d, jsonArray.getDouble(2), 0d);
assertTrue(jsonArray.getBoolean(3));
3.使用一个Collection来创建一个JSONArray(Creating a JSONArray from a Collection)
实例1:
Java代码
List list = new ArrayList();
list.add( "JSON" );
list.add( "1" );
list.add( "2.0" );
list.add( "true" );
JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON( list ); assertEquals( "JSON", jsonArray.getString(0) );
assertEquals( 1, jsonArray.getInt(1) );
assertEquals( 2.0d, jsonArray.getDouble(2), 0d );
assertTrue( jsonArray.getBoolean(3) );
4.使用一个Array来创建一个JSONArray(Creating a JSONArray from an array)
实例1:
Java代码
Object[] array = new Object[] { "JSON", 1, 2.0, true };
JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON(array); assertEquals("JSON", jsonArray.getString(0));
assertEquals(1, jsonArray.getInt(1));
assertEquals(2.0d, jsonArray.getDouble(2), 0d);
assertTrue(jsonArray.getBoolean(3));
//实例2:
Object[] array = new Object[] { "JSON", 1, 2.0, true };
JSONArray jsonArray = JSONArray.fromObject(array);
assertEquals("JSON", jsonArray.getString(0));
assertEquals(1, jsonArray.getInt(1));
assertEquals(2.0d, jsonArray.getDouble(2), 0d);
assertTrue(jsonArray.getBoolean(3));
由此可见,无论要转换的源是哪种类型,都可以使用(JSONArray) JSONSerializer.toJSON()或JSONArray.fromObject()来转换;
常用的三种扩展功能
1.使用一个JSON格式化字符串来创建一个JSONFunction(JavaScript functions)
实例:
Java代码
String str = "{func: function( param ){ doSomethingWithParam(param); }}";
JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON(str); JSONFunction func = (JSONFunction) jsonObject.get("func"); ArrayAssertions.assertEquals(new String[] { "param" }, func.getParams());
assertEquals("doSomethingWithParam(param);", func.getText());
注:函数的写法要注意function(){},参数param是可选的!
2.排除一个JSON格式化字符串的某些属性(Exclude properties)
实例:
Java代码
String str = "{'string':'JSON', 'integer': 1, 'double': 2.0, 'boolean': true}";
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setExcludes(new String[] { "double", "boolean" }); JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON(str, jsonConfig);
assertEquals("JSON", jsonObject.getString("string"));
assertEquals(1, jsonObject.getInt("integer"));
assertFalse(jsonObject.has("double"));
assertFalse(jsonObject.has("boolean"));
3.排除一个JSON格式化字符串的某些属性,使用过滤器(Exclude properties (with filters)
实例:
Java代码
String str = "{'string':'JSON', 'integer': 1, 'double': 2.0, 'boolean': true}";
JsonConfig jsonConfig = new JsonConfig(); jsonConfig.setJsonPropertyFilter(new PropertyFilter() {
public boolean apply(Object source, String name, Object value) {
if ("double".equals(name) || "boolean".equals(name))
{ return true; }
return false; } });
JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON(str, jsonConfig);
assertEquals("JSON", jsonObject.getString("string"));
assertEquals(1, jsonObject.getInt("integer"));
assertFalse(jsonObject.has("double"));
assertFalse(jsonObject.has("boolean"));
JSONObject-Java常用的四种用法
1.JSONObject to DynaBean
Java代码
String json = "{name=\"json\",bool:true,int:1,double:2.2}"; JSONObject jsonObject = JSONObject.fromObject(json); //抽象的写法:DynaBean bean = (DynaBean) JSONSerializer.toJava( jsonObject ); Object bean = JSONObject.toBean(jsonObject);
//Object bean1 = JSONSerializer.toJava(jsonObject);
assertEquals(jsonObject.get("name"), PropertyUtils.getProperty(bean, "name"));
assertEquals(jsonObject.get("bool"), PropertyUtils.getProperty(bean, "bool"));
assertEquals(jsonObject.get("int"), PropertyUtils.getProperty(bean, "int"));
assertEquals(jsonObject.get("double"), PropertyUtils.getProperty(bean, "double"));
2.JSONObject to JavaBean
Java代码
String json = "{name:\"zhangsan\",age:25,hight:1.72,sex:true}"; JSONObject jsonObject = JSONObject.fromObject(json);
UserBean bean = (UserBean) JSONObject.toBean(jsonObject, UserBean.class);
System.out.println(jsonObject);
3.JSONArray to List
Java代码
String json = "[\"first\",\"second\"]";
JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON(json);
List output = (List) JSONSerializer.toJava(jsonArray);
4.JSONArray to array
Java代码
String json = "[\"first\",\"second\"]";
JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON(json); JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setArrayMode(JsonConfig.MODE_OBJECT_ARRAY);
Object[] output = (Object[]) JSONSerializer.toJava(jsonArray, jsonConfig);
Object[] expected = new Object[] { "first", "second" }; ArrayAssertions.assertEquals(expected, output);
理论上,这样就可以了,但时,有异常Caused by: java.lang.NoSuchMethodException: com.json.Json$UserBean.<init>()
2.使用一个JSON格式化字符串来创建一个JSONArray(Creating a JSONArray from a JSON formatted string)
实例1:
Java代码
String str = "['JSON', 1, 2.0, true]"; //注意该字符串的格式"[ , ]" JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON( str ); assertEquals( "JSON", jsonArray.getString(0) );
assertEquals( 1, jsonArray.getInt(1) );
assertEquals( 2.0d, jsonArray.getDouble(2), 0d );
assertTrue( jsonArray.getBoolean(3) );
Java代码
List<String> list = new ArryList<String>(); list.add("a"); list.add("b"); Map<String,List<String>> map = new HashMap<String,List<String>>(); map.put("list",list); MessageUtils.outputJSONResult(JSONObject.fromObject(map).toString(), response); public class MessageUtils { public static void outputJSONResult(String result, HttpServletResponse response) { try { response.setHeader("ContentType", "text/json"); response.setCharacterEncoding("utf-8"); PrintWriter pw = response.getWriter(); pw.write(result); pw.flush(); pw.close(); } catch (IOException e) { e.printStackTrace(); } }
日志——JSON的相关方法的更多相关文章
- elk 入门 - 分析nginx日志 + json格式 + 有调试的意识 + elk7.2.0
1.本次采用的一台主机,将所有的软件安装一台上进行测试工作. 2.安装部署:https://blog.51cto.com/hwg1227/2299995 3.简单调试 输出rubydebug inpu ...
- ELK学习实验014:Nginx日志JSON格式收集
1 Kibana的显示配置 https://demo.elastic.co/app/kibana#/dashboard/welcome_dashboard 环境先处理干净 安装nginx和httpd- ...
- elk 日志收集 filebeat 集群搭建 php业务服务日志 nginx日志 json 7.12版本 ELK 解决方案
难的不是技术,难的是业务.熟悉业务流程才是最难的. 其实搜索进来的每一个人的需求不一样,希望你能从我的这篇文章里面收获到. 建议还是看官方文档,更全面一些. 一.背景 1,收集nginx acces ...
- ElastAlert监控日志告警Web攻击行为---tomcat和nginx日志json格式
一.ELK安装 1.2 elk配置 logstash自定义配置文件,取名为filebeat_log.conf : input { beats { port => 5044 client_inac ...
- Beats: 使用 Filebeat 进行日志json结构化 - Python
文章转载自:https://elasticstack.blog.csdn.net/article/details/106688240
- Taurus.MVC 2.2 开源发布:WebAPI 功能增强(请求跨域及Json转换)
背景: 1:有用户反馈了关于跨域请求的问题. 2:有用户反馈了参数获取的问题. 3:JsonHelper的增强. 在综合上面的条件下,有了2.2版本的更新,也因此写了此文. 开源地址: https:/ ...
- 一个ELK日志检索实施案例
figure:first-child { margin-top: -20px; } #write ol, #write ul { position: relative; } img { max-wid ...
- json文件格式详解
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Programming Lan ...
- <二>ELK-6.5.3学习笔记–使用rsyslog传输管理nginx日志
http://www.eryajf.net/2362.html 转载于 本文预计阅读时间 28 分钟 文章目录[隐藏] 1,nginx日志json化. 2,发送端配置. 3,接收端配置. 4,配置lo ...
随机推荐
- js 滚动 学习
// s:= 'document.getElementsByName(''seccodeverify'')[0].scrollTop=100;'; // s:='scrollTo(0,document ...
- hg常用命令
关于hg命令选项 如果你是在windows系统下,使用的是图像界面,你很可能不常用它.但是一旦你了解这些命令之后,会觉得很方便.hg有很多命令,这些命令都有一定的选项,在开始的时候,只知道用它,有时候 ...
- c++ 成员函数
#include <iostream> #include "Sales_item.h" int main() { Sales_item item1, item2; st ...
- iOS开发常见BUG和一些小技巧(ps:耐心看完,很实用)
[385][scrollView不接受点击事件,是因为事件传递失败] // // MyScrollView.m // Created by beyond on 15/6/6. // Copyright ...
- 阿里云SLB后Nginx、Tomcat获取真实IP
一.SLB后Nginx如何获取真实IP 前提:nginx作为slb获取真实ip是使用 http_realip_module,默认一键安装包安装的nginx没有安装这个模块需要重新重新编译nginx并加 ...
- 读《UNIX编程艺术》一感
我记得早在2006年的时候就开始频繁使用awk做文本处理方面的工作,07年的时候周围有人用perl,我还感到很不解,觉得写得很复杂,没有awk one liner 那么方便和神奇.一直在了解awk的具 ...
- Dijkstra搜索算法
Dijkstra无向图 算法执行步骤如下: 上面两张图来源于:http://blog.csdn.net/v_july_v/article/details/6096981 很牛的大神,膜拜,此处有鲜花 ...
- [题解]UVa 10891 Game of Sum
在游戏的任何时刻剩余的都是1 - n中的一个连续子序列.所以可以用dp[i][j]表示在第i个数到第j个数中取数,先手的玩家得到的最大的分值.因为两个人都很聪明,所以等于自己和自己下.基本上每次就都是 ...
- ueditor不自动加P解决方法
百度的Ueditor编辑器出于安全考虑; 用户在html模式下粘贴进去的html文档会自动被去除样式和转义. 虽然安全的,但是非常不方便. 做一下修改把这个功能去掉. 一.打开ueditor.all. ...
- sql删除前导和后缀
1.patindex用法 patindex('%pattern%', expression) pattern--> 正则表达式,需要匹配的前导内容,可以进通配: expression--> ...