【www.guakaob.com--化工师】
json在线格式化篇一
《使用JSON插件》
使用JSON插件
14.4 使用JSON插件
基础 14.4.1 JSON
JSON(JavaScript Object Natation),它是一种轻量级、基于文本、语言无关的数据交换格式,类似于XML,是一种结构化数据串行化的文本格式,常常用于服务器与JavaScript之间的数据交换上。
JSON是从ECMAScript语言标准衍生而来的,定义了一套简单的格式化规则,JSON可以描述四种简单的类型,包括字符串、数字、布尔值及和null;还可以描述两种结构化类型,包括对象和数组。
当然,更多JSON具体的语法不是这里关注的重点,有需要的朋友请参见
14.4.2 JSON插件
为了更容易使用JSON,Struts2提供了JSON插件,这个插件提供了名为“json”的ResultType,如果设置某个Result的类型为json,那么JSON插件会把这个Action对象序列化成为一个json格式的字符串,然后再向客户端返回这个字符串。
要使用JSON插件,只需要把struts2-json-plugin-2.1.8.1.jar文件拷贝到WEB-INF/lib里面即可。
JSON插件提供了一些参数,供大家在有需要的时候选用,可以通过他们实现更精确的控制,基本的参数罗列如下:
excludeProperties:输出结果需要去除的属性值,支持正则表达式匹配属性名,可以用“,”分割填充多个正则表达式。如下示例代码就表示,user属性里面的password属性不会被序列化输出,代码如下:
java代码:
1. <result type="json">
2. <param name="excludeProperties">
3. user.password
4. </param>
5. </result>
includeProperties:输出结果中需要包含的属性值,支持正则表达式和属性名匹配,可以用“,”分割填充多个正则表达式。如下示例就表示输出user的所有属性,代码如下:
java代码:
更多内容在‘java私塾官网’
1. <result type="json">
2. <param name="includeProperties">
3.
user.*
4. </param>
5. </result>
root:根据ognl表达式取出你需要输出的结果的根对象,如下示例就表示输出user的name属性的值,代码如下:
java代码:
1. <result type="json">
2. <param name="includeProperties">
3. user.name
4. </param>
5. </result>
excludeNullProperties:表示是否去掉空值, 默认值是false,如果设置为true会自动将为空的值过滤,只输出不为空的值 ignoreHierarchy:表示是否忽略继承关系,默认值是true,也就是在输出的时候不会自动把父级对象序列
化并输出。
当然,JSON
插件还有很多的参数,这里就不去一一罗列了,有兴趣的朋友请参见
https://cwiki.apache.org/confluence/display/WW/JSON%20Plugin,哪里有详尽的参数说明。
14.4.3使用JSON插件来实现Ajax
沿用前面演示Ajax的示例,实现最常见的输入校验的功能,通过Ajax来判断输入的ID是否重复,并给出相应的提示信息。
(1)Action的写法跟以前差不多,示例代码如下:
java代码:
1. public class AjaxAction extends ActionSupport {
2. private String account;
3. private String password;
4. private String msg;
5.
6. public String getAccount() {
7. return account;
8. }
更多内容在‘java私塾官网’
9. public void setAccount(String account) {
10. this.account = account;
11. }
12. public String getPassword() {
13. return
password;
14. }
15. public void setPassword(String password) {
16. this.password = password;
17. }
18. public String getMsg() {
19. return msg;
20. }
21. public void setMsg(String msg) {
22. this.msg = msg;
23. }
24.
25.
26. public String execute() throws Exception {
27. //准备已经注册的数据,测试使用
28. Set<String> set = new HashSet<String>();
29. set.add("account1");
30. set.add("account2");
31. set.add("account3");
32.
33. if(set.contains(account)){
34. msg = "输入不正确,请重新输入";
35. }else{
36. msg = "输入正确";
37. }
38. return this.SUCCESS;
39. }
40. }
注意:Action的属性需要提供getter/setter方法,不能用public属性的方式进行值的对应,否则JSON插件是不会正确序列化属性值的。
(2)struts.xml的配置有一些变化,首先是不再继承struts-default,而是改为继承json-default;其次result的type要设置为json,示例代码如下:
java代码:
1. <action name="ajaxAction" class="cn.javass.ajax.AjaxAction">
2. <result name="success" type="json"></result>
3. </action>
更多内容在‘java私塾官网’
(3)页面也有一些变化,主要是在获取Action的返回值过后,需要通过eval方法来把json字符串造型成为一个对象,然后把这个对象中的msg属性的值设置到div中显示即可,示例代码如下:
java代码:
1. <%@ page contentType="text/html; charset=gb2312"%>
2. <head><meta http-equiv="Content-Type" content="text/html;charset=gb2312"></head
>
3. <script language="javascript">
4. var myRequest;
5. function t1(){
6. //准备向后台传输的数据
7. var account = document.getElementById("account").value;
8. //Ajax
9. myRequest = new ActiveXObject("Msxml2.XMLHTTP");
10. myRequest.onreadystatechange = t2;
11. myRequest.open("GET","ajaxAction.action?account="+account,true);
12. myRequest.send(null);
13. }
14. function t2(){
15. if(myRequest.readyState==4){
16. var ret = myRequest.responseText;
17. //把json造型成对象
18. var obj = eval("("+ret+")");
19. //后续处理,把对象的msg设置到div中显示出来
20. document.all("myDiv").innerHTML = obj.msg;
21. }
22. }
23. </script>
24. <form action="" medhot="post">
25. <table>
26. <tr>
27. <td colspan=3 align=center>新用户注册</td>
28. </tr>
29. <tr>
30. <td>用户帐号:</td>
31. <td><input type="text" id="account" name="account" onblur="t1();"><
font color=red>*</font></td>
32. <td><div id="myDiv"></div></td>
33. </tr>
34. <tr>
35. <td>用户密码:</td>
更多内容在‘java私塾官网’
36. <td colspan=2><input type="password" id=""password" name="password"
></td>
37. </tr>
38. <tr>
39. <td>重复密码:</td>
40. <td colspan=2><input type="password" id=""password2" name="password
2"></td>
41. </tr>
42. <tr>
43. <td colspan=3 align=center><input type="submit" value="保存注册信息
"></td>
44. </tr>
45. </table>
46. </form>
去运行看看,效果应该跟前面AJAX演示的效果是一样的。
私塾在线网站原创《研磨struts2》系列
更多内容在‘java私塾官网’
json在线格式化篇二
《JSON》
1.什么是JSON
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。
2.JSON语法规则
l 数据在名称/值对中
l 数据由逗号分隔
l 花括号保存对象
l 方括号保存数组
JSON 数据的书写格式是:名称/值对。
名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:
"firstName" : "John"
这很容易理解,等价于这条 JavaScript 语句:
firstName = "John"
l 数字(整数或浮点数)
l 字符串(在双引号中)
l 逻辑值(true 或 false)
l 数组(在方括号中)
l 对象(在花括号中)
l null
JSON在线校验格式化工具:
3.JSON基础结构
JSON建构有两种结构
JSON简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构。
1、对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。
2、数组:数组在js中是中括号“[]”括起来的内容,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。
经过对象、数组2种结构就可以组合成复杂的数据结构了。
4.JSON基础示例
简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序。这个字符串看起来有点儿古怪,但是JavaScript很容易解释它,而且 JSON 可以表示比"名称 / 值对"更复杂的结构。例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表。
名称 / 值对
按照最简单的形式,可以用下面这样的 JSON 表示"名称 / 值对":
{ "firstName": "Brett" }
这个示例非常基本,而且实际上比等效的纯文本"名称 / 值对"占用更多的空间: firstName=Brett
但是,当将多个"名称 / 值对"串在一起时,JSON 就会体现出它的价值了。首先,可以创建包含多个"名称 / 值对"的 记录,比如:
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" }
从语法方面来看,这与"名称 / 值对"相比并没有很大的优势,但是在这种情况下 JSON 更容易使用,而且可读性更好。例如,它明确地表示以上三个值都是同一记录的一部分;花括号使这些值有了某种联系。
表示数组
当需要表示一组值时,JSON 不但能够提高可读性,而且可以减少复杂性。例如,假设您希望表示一个人名列表。在XML中,需要许多开始标记和结束标记;如果使用典型的名称 / 值对(就像在本系列前面文章中看到的那种名称 / 值对),那么必须建立一种专有的数据格式,或者将键名称修改为 person1-firstName这样的形式。
如果使用 JSON,就只需将多个带花括号的记录分组在一起:
这不难理解。在这个示例中,只有一个名为 people的变量,值是包含三个条目的数组,每个条目是一个人的记录,其中包含名、姓和电子邮件地址。上面的示例演示如何用括号将记录组合成一个值。当然,可以使用相同的语法表示多个值(每个值包含多个记录):
这里最值得注意的是,能够表示多个值,每个值进而包含多个值。但是还应该注意,在不同的主条目(programmers、authors 和 musicians)之间,记录中实际的名称 / 值对可以不一样。JSON 是完全动态的,允许在 JSON 结构的中间改变表示数据的方式。
在处理 JSON 格式的数据时,没有需要遵守的预定义的约束。所以,在同样的数据结构中,可以改变表示数据的方式,甚至可以以不同方式表示同一事物。
5.JSON和XML比较
可读性
JSON和XML的可读性可谓不相上下,一边是简易的语法,一边是规范的标签形式,很难分出胜负。 可扩展性
XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,而JSON却不能扩展的。不过JSON在Javascript主场作战,可以存储Javascript复合对象,有着xml不可比拟的优势。 编码难度、解码难度(略)
实例比较
XML和JSON都使用结构化方法来标记数据,下面来做一个简单的比较。
用XML表示中国部分省市数据如下:
<?xml version="1.0" encoding="utf-8"?>
<country>
<name>中国</name>
<province>
<name>黑龙江</name>
<cities>
<city>哈尔滨</city>
<city>大庆</city>
</cities>
</province>
<province>
<name>广东</name>
<cities>
<city>广州</city>
<city>深圳</city>
<city>珠海</city>
</cities>
</province>
<province>
<name>台湾</name> <cities>
<city>台北</city> <city>高雄</city> </cities>
</province>
<province>
<name>新疆</name> <cities>
<city>乌鲁木齐</city> </cities>
</province>
</country>
用JSON表示如下:
json在线格式化篇三
《网络项目-douban-JSON解析》
json在线格式化篇四
《Java操作JSON的便捷工具类》
/**
* Copyright 2010 Fuchun. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and
* limitations under the License.
*/
package my.tools;
import java.lang.reflect.Type;
import java.util.Collection;
import java.util.Enumeration;
import java.util.Iterator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import org.apache.commons.lang.StringUtils;
/**
* 包含操作 {@code JSON} 数据的常用方法的工具类。
* <p />
* 该工具类使用的 {@code JSON} 转换引擎是 <a href="mce_href="target="_blank">
* {@code Google Gson}</a>。 下面是工具类的使用案例:
*
* <pre>
* public class User {
* @SerializedName("pwd")
* private String password;
* @Expose
* @SerializedName("uname")
* private String username;
* @Expose
* @Since(1.1)
* private String gender;
* @Expose * @Since(1.0) * private String sex; *
* public User() {}
* public User(String username, String password, String gender) {
* // user constructor code... ... ...
* }
*
* public String getUsername()
* ... ... ...
* }
* List<User> userList = new LinkedList<User>();
* User jack = new User("Jack", "123456", "Male");
* User marry = new User("Marry", "888888", "Female");
* userList.add(jack);
* userList.add(marry);
* Type targetType = new TypeToken<List<User>>(){}.getType();
* String sUserList1 = JSONUtils.toJson(userList, targetType);
* sUserList1 ---->
[{"uname":"jack","gender":"Male","sex":"Male"},{"uname":"marry","gender":"Female","sex":"Female"}]
* String sUserList2 = JSONUtils.toJson(userList, targetType, false);
* sUserList2 ---->
[{"uname":"jack","pwd":"123456","gender":"Male","sex":"Male"},{"uname":"marry","pwd":"888888","gender":"Female","sex":"Female"}]
* String sUserList3 = JSONUtils.toJson(userList, targetType, 1.0d, true);
* sUserList3 ----> [{"uname":"jack","sex":"Male"},{"uname":"marry","sex":"Female"}] * </pre>
*
* @author Fuchun
* @since ay-commons-lang 1.0
* @version 1.1.0
*/
public class JSONUtils {
private static final Logger LOGGER = LoggerFactory.getLogger(JSONUtils.class);
/** 空的 {@code JSON} 数据 - <code>"{}"</code>。 */
public static final String EMPTY_JSON = "{}";
/** 空的 {@code JSON} 数组(集合)数据 - {@code "[]"}。 */
public static final String EMPTY_JSON_ARRAY = "[]";
/** 默认的 {@code JSON} 日期/时间字段的格式化模式。 */
public static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd HH:mm:ss SSS";
/** {@code Google Gson} 的 <code>@Since</code> 注解常用的版本号常量 - {@code 1.0}。 */
public static final double SINCE_VERSION_10 = 1.0d;
/** {@code Google Gson} 的 <code>@Since</code> 注解常用的版本号常量 - {@code
1.1}。 */
public static final double SINCE_VERSION_11 = 1.1d;
/** {@code Google Gson} 的 <code>@Since</code> 注解常用的版本号常量 - {@code
1.2}。 */
public static final double SINCE_VERSION_12 = 1.2d;
/** {@code Google Gson} 的 <code>@Until</code> 注解常用的版本号常量 - {@code 1.0}。 */
public static final double UNTIL_VERSION_10 = SINCE_VERSION_10;
/** {@code Google Gson} 的 <code>@Until</code> 注解常用的版本号常量 - {@code
1.1}。 */
public static final double UNTIL_VERSION_11 = SINCE_VERSION_11;
/** {@code Google Gson} 的 <code>@Until</code> 注解常用的版本号常量 - {@code
1.2}。 */
public static final double UNTIL_VERSION_12 = SINCE_VERSION_12;
/**
* <p>
* <code>JSONUtils</code> instances should NOT be constructed in standard programming. Instead,
* the class should be used as <code>JSONUtils.fromJson("foo");</code>.
* </p>
* <p>
* This constructor is public to permit tools that require a JavaBean instance to operate. * </p>
*/
public JSONUtils() {
super();
}
/**
* 将给定的目标对象根据指定的条件参数转换成 {@code JSON} 格式的字符串。 * <p />
* <strong>该方法转换发生错误时,不会抛出任何异常。若发生错误时,曾通对象返回 <code>"{}"</code>; 集合或数组对象返回 <code>"[]"</code>
* </strong>
*
* @param target 目标对象。
* @param targetType 目标对象的类型。
* @param isSerializeNulls 是否序列化 {@code null} 值字段。
* @param version 字段的版本号注解。
* @param datePattern 日期字段的格式化模式。
* @param excludesFieldsWithoutExpose 是否排除未标注 {@literal @Expose} 注解的字段。
* @return 目标对象的 {@code JSON} 格式的字符串。
* @since 1.0
*/
public static String toJson(Object target, Type targetType, boolean isSerializeNulls, Double version,
String datePattern, boolean excludesFieldsWithoutExpose) {
if (target == null) return EMPTY_JSON;
GsonBuilder builder = new GsonBuilder();
if (isSerializeNulls) builder.serializeNulls();
if (version != null) builder.setVersion(version.doubleValue());
}
/**
* 将给定的目标对象转换成 {@code JSON} 格式的字符串。<strong>此方法只用来转换普通的 {@code JavaBean} 对象。</strong>
* <ul>
* <li>该方法只会转换标有 {@literal @Expose} 注解的字段;</li>
* <li>该方法不会转换 {@code null} 值字段;</li>
* <li>该方法会转换所有未标注或已标注 {@literal @Since} 的字段;</li>
* <li>该方法转换时使用默认的 日期/时间 格式化模式 - {@code yyyy-MM-dd HH:mm:ss SSS};</li>
* </ul>
*
* @param target 要转换成 {@code JSON} 的目标对象。
* @return 目标对象的 {@code JSON} 格式的字符串。
* @since 1.0
*/
public static String toJson(Object target) {
return toJson(target, null, false, null, null, true); if (StringUtils.isBlank(datePattern)) datePattern = DEFAULT_DATE_PATTERN; builder.setDateFormat(datePattern); if (excludesFieldsWithoutExpose) builder.excludeFieldsWithoutExposeAnnotation(); return toJson(target, targetType, builder);
}
/**
* 将给定的目标对象转换成 {@code JSON} 格式的字符串。<strong>此方法只用来转换普通的 {@code JavaBean} 对象。</strong>
* <ul>
* <li>该方法只会转换标有 {@literal @Expose} 注解的字段;</li>
* <li>该方法不会转换 {@code null} 值字段;</li>
* <li>该方法会转换所有未标注或已标注 {@literal @Since} 的字段;</li>
* </ul>
*
* @param target 要转换成 {@code JSON} 的目标对象。
* @param datePattern 日期字段的格式化模式。
* @return 目标对象的 {@code JSON} 格式的字符串。
* @since 1.0
*/
public static String toJson(Object target, String datePattern) {
return toJson(target, null, false, null, datePattern, true);
}
/**
* 将给定的目标对象转换成 {@code JSON} 格式的字符串。<strong>此方法只用来转换普通的 {@code JavaBean} 对象。</strong>
* <ul>
* <li>该方法只会转换标有 {@literal @Expose} 注解的字段;</li>
* <li>该方法不会转换 {@code null} 值字段;</li>
* <li>该方法转换时使用默认的 日期/时间 格式化模式 - {@code yyyy-MM-dd HH:mm:ss SSS};</li>
* </ul> * * @param target 要转换成 {@code JSON} 的目标对象。 * @param version 字段的版本号注解({@literal @Since})。
* @return 目标对象的 {@code JSON} 格式的字符串。
* @since 1.0
*/
public static String toJson(Object target, Double version) {
return toJson(target, null, false, version, null, true);
}
/**
* 将给定的目标对象转换成 {@code JSON} 格式的字符串。<strong>此方法只用来转换普通的 {@code JavaBean} 对象。</strong>
* <ul>
* <li>该方法不会转换 {@code null} 值字段;</li>
json在线格式化篇五
《学习网址》
编程入门silverlight社区silverlight 学习示例Expression Blend实例中文教程系列文章汇总银光中国silverlight资源在线JSON数据格式化工具componentOnemvvm Silverlight 数据验证
json在线格式化篇六
《java中ArrayListMapObject与Json互相转换》
JSON(JavaScript Object Notation): 是一种轻量级的数据交换格式
一、JSON建构有两种结构:对象和数组
1、对象:对象在js中表示为“{}”扩起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。
2、数组:数组在js中是中括号“[]”扩起来的内容,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。
经过对象、数组2种结构就可以组合成复杂的数据结构了。
二、具体形式
1、对象
(1)一个对象以“{”(左括号)开始,“}”(右括号)结束。
(2)每个“名称”后跟一个“:”(冒号)
(3)“„名称/值‟ 对”之间使用“,”(逗号)分隔
例子:表示人的一个对象:
{
"姓名" : "大憨",
"年龄" : 24
}
2、数组是值(value)的有序集合。
(1)一个数组以“[”(左中括号)开始,“]”(右中括号)结束。
(2)值之间使用“,”(逗号)分隔。
例子:一组学生
{
"学生" :
[
{"姓名" : "小明" , "年龄" : 23},
{"姓名" : "大憨" , "年龄" : 24}
]
}
说明:此Json对象包括了一个学生数组,而学生数组中的值又是两个Json对象。
说了这些基本了解json的数据结构了...
补充:在线Json校验格式化工具:
三、老样子上次demo
这时我的工程结构图:上面引用到的外部库大家网上搜索下载~
configdata.json:
[javascript] view plaincopy 1. [
2. true,
3. false,
4. true
5. ]
Address类:
[java] view plaincopy
1. /**
2. * @Title: 创建Address实体类的POJO
3. * @Description: TODO(用一句话描述该文件做什么)
4. * @author Potter
5. * @date 2013-2-18 上午10:16:03
6. * @version V1.0
7. */
8.
9. public class Address {
10. private String street;//街道
11. private String city;//城市
12. private int zip;//邮编
13. private String tel;//第一个电话号码
14. private String telTwo;//第二个电话号码
15.
16. public Address() {
17. }
18.
19. public Address(String street, String city, int zip, String tel, String t
elTwo){
20. this.street = street;
21. this.city = city;
22. this.zip = zip;
23. this.tel = tel;
24. this.telTwo = telTwo;
25. }
26.
27. public String getStreet() {
28. return street;
29. }
30.
31. public void setStreet(String street) {
32. this.street = street;
33. }
34.
35. public String getCity() {
36. return city;
37. }
38.
39. public void setCity(String city) {
40. this.city = city;
41. }
42.
43. public int getZip() {
44. return zip;
45. }
46.
47. public void setZip(int zip) {
48. this.zip = zip;
49. }
50.
51. public String getTel() {
52. return tel;
53. }
54.
55. public void setTel(String tel) {
56. this.tel = tel;
57. }
58.
59. public String getTelTwo() {
60. return telTwo;
61. }
62.
63. public void setTelTwo(String telTwo) {
64. this.telTwo = telTwo;
65. }
66. }
JsonTest类:
[java] view plaincopy
1. import java.io.File;
2. import java.io.FileNotFoundException;
3. import java.io.FileReader;
4. import java.io.IOException;
5. import java.util.ArrayList;
6. import java.util.LinkedHashMap;
7. import java.util.List;
8. import java.util.Map;
9.
10. import net.sf.ezmorph.bean.MorphDynaBean;
11. import net.sf.json.JSONArray;
12. import net.sf.json.JSONFunction;
13. import net.sf.json.JSONObject;
14.
15. public class JsonTest {
16.
17. public static void main(String args[]) {
18. //javaArray和json互相转换
19. javaArrayAndJsonInterChange();
20. System.out.println("-------------------------------------");
21. //javaList和json互相转换
22. javaListAndJsonInterChange();
23. System.out.println("-------------------------------------");
24. //javaMpa和Json互转
25. javaMapAndJsonInterChange();
26. System.out.println("-------------------------------------");
27. //javaObject和jsonObject互转
28. javaObjectAndJsonInterChange();
29. }
30.
31. /**
32. * javaArray和json互相转换
33. */
34. public static void javaArrayAndJsonInterChange() {
35. // java 转数组
36. boolean[] boolArray = new boolean[] { true, false, true };
37. JSONArray jsonArray = JSONArray.fromObject(boolArray);
38. String s = jsonArray.toString();
39. System.out.println(s);
40.
41. // 通过json获取数组中的数据
42. String result = readJson("configdata");
43.
44. JSONArray jsonR = JSONArray.fromObject(result);
45. int size = jsonR.size();
46. for (int i = 0; i < size; i++) {
47. System.out.println(jsonR.get(i));
48. }
49. }
50.
51. /**
52. * javaList和json互相转换
53. */
54. public static void javaListAndJsonInterChange() {
55. List list = new ArrayList();
56. list.add(new Integer(1));
57. list.add(new Boolean(true));
58. list.add(new Character('j'));
59. list.add(new char[] { 'j', 's', 'o', 'n' });
60. list.add(null);
json在线格式化篇七
《RGB》
首页
关于aTool.org
在线颜色选择器 | RGB颜色查询对照表 - aTool在线工具
在线颜色选择器一
两款完善的颜色代码选择器,可以选择任何颜色!
cancelchoose
在线颜色选择器二
简单轻便的,点击输入框可以选择常用的几款颜色!
颜色代码大全 - RGB颜色查询对照表
#FFFFF
F #FFFAF
A
#FFFFF
0 #FFFAF
#FFFFE
0 #FFFAC
D
#FFFF00 #FFF8DC
#FFF68
F #FFEFD
5 #FFE4E
1 #FFDE
AD #FFC1
C1 #FFB90
F #FFA54
F #FF8C0
0 #FF7F5
0 #FF6EB
4
#FFF5E
E #FFEC8
B #FFE4C
4 #FFDA
B9 #FFC12
5 #FFB6C
1 #FFA50
0 #FF83F
A #FF7F2
4 #FF6A6
A
#FFF0F
5 #FFEBC
D #FFE4B
5 #FFD7
00 #FFC0
CB #FFB5C
5 #FFA07
A #FF82A
B #FF7F0
0 #FF69B
4
#FFEFDB #FFE7BA #FFE1FF #FFD39B #FFBBFF #FFAEB9 #FF8C69 #FF8247 #FF7256 #FF6347
json在线格式化篇八
《REST client 基于浏览器的测试工具》
REST client 基于浏览器的测试工具 以前在开发webservice服务,都是自己基于HTTP协议,自己写一个测试程序来进行测试,最近在研究RestFul,对以前webservice服务进行了重构,总结了不少经验,今天就给大家介绍下几款Rest Client的测试工具。
REST介绍
所谓REST,是Representational State Transfer,这个词汇的中文翻译很不统一,而且很晦涩,有叫“具象状态传输”,有叫“表象化状态转变”,等等。
REST风格的Web服务,是通过一个简洁清晰的URI来提供资源链接,客户端通过对URI发送HTTP请求获得这些资源,而获取和处理资源的过程让客户端应用的状态发生改变(不像那些远程过程调用那么直接地发生改变)。
常用的对资源进行CRUD(Create, Read, Update 和 Delete)的四种HTTP方法分别是POST, GET, PUT, DELETE。
基于浏览器的Rest Client工具
在chrome或者firefox浏览器都有很多插件,我一般都是使用chrome浏览器,在chrome的webstore中可以搜索到自己想要的插件。这里就讲讲,,,,火狐下的。
Advanced REST client
网页开发者辅助程序来创建和测试自定义HTTP请求。它是一款非常强大,使用简单的客户端测试工具,得到了程序员的好评。每周超过50k的开发者使用此应用程序。如此多的人是不会错
的!
支持的功能 1. Make a HTTP request (via XmlHttpRequest level 2) 2. Debug socket (via web socket API). 3. JSON response viewer 4. XML response viewer 5. set custom headers - even does not supported by XmlHttpRequest object 6. help with filling HTTP headers (hint + code completion) 7. add headers list as raw data or via form 8. construct POST or PUT body via raw input, form or send file(s) with request 9. set custom form encoding 10. remember latest request (save current form state and restore on load) 11. save (Ctrl+S) and open (Ctrl+O) saved request forms
12. history support
13. data import/export
Postman -REST client
Postman可以帮助你更有效的针对API工作。Postman是一个scratch-your-own-itch项目。它需要的是开发者有效的在项目中创建APIS,能够对API测试进行收藏保
留。 支持功能
1. HTTP requests 支持文件上传
2. 格式化API响应的JSON and XML 3. 打开 responses 的HTML文件在一个新窗口展示
4. 支持REST准则的超媒体应用状态的引擎- HATEOS
5. 图像预览
6. Request history
7. 基本oauth 1.0助手
8. Autocomplete for URL and header values
9. 可以在URL参数中使用 key/value编辑添加参数或header值
10. 使用环境变量容易转移之间设置。可用于测试,生产,分期或本地设置。
11. 使用全局变量的值是在整个 APIs
12. 使用快速查找功能预览变量和它们的值使用状况
13. 键盘快捷方式,最大限度地提高您的生产力
Simple REST Client
Simple REST Client插件,提供了一个简单的表单进行各种HTTP操作,并可以看到返回的信息。构建自定义HTTP请求直接测试您的网络
服
Firefox下的RESTClient
FirefoxRESTClient的插件,这款插件由国人开发,功能上支持Basic和OAuth的登录header发送,并且对于返回的XML数据还可以高亮显示
Linux常用的工具CURL
CURL是一个很强大的支持各种协议的文件传输工具,用它来进行RESTful Web Services的测试简直是小菜一碟。
CURL的命令参数非常多,一般用于RESTful Web Services测试要用到下面四种参数:
-d/–data :POST数据内容 -X/–request :指定请求的方法(使用-d时就自动设为POST了) -H/–header :设定header信息 -I/–head:只显示返回的HTTP头信息 Java GUI rest-client
这是一个用Java写的测试小工具,项目主页上提到它有命令行和GUI两种版本。为了方便操作我们选择GUI版本来看看。既然是一款软件,显然就比刚才介绍的浏览器插件功能更加强大。它支持应答正文的JSON和XML缩排和高亮,还可以一键搭建一个RESTful服务端,另外还提供了单元测试的功能。
json在线格式化篇九
《在线编辑器》
. 下载KindEditor最新版本。 下载地址:
2. 解压文件,并把解压后得到的所有文件及文件夹都放到您的程序目录下,例如:
最重要的最必须的是kindeditor.js
文件和plugins,skins两个文件夹,千万要放进去,至于其它的文件夹,可放可不放,一般是没用的,比如,examples就是20多个效果html。)
3.解压文件之后,有个jsp的文件夹,打开后,有个lib的文件夹,里面有三个jar
包:commons-fileupload-1.2.1.jar,commons-io-1.4.jar,json_simple-1.1.jar,把这三个jar包放入WEB-INF文件夹下的lib文件夹内,并刷新项目。
4. 以上配置好之后,就可以直接在jsp页面上调用了,要保证的是在jsp页面上调kindeditor.js文件时,路径
一定要正确,在添加编辑器的页面头部添加以下代码,id为textarea控件的ID。 Js代码 <script type="text/javascript" charset="utf-8" src="/kindeditor/kindeditor.js"></script>
<!-- 添加kindeditor的引用 -->
<script type="text/javascript"> KE.show({ id : 'content_1'//TEXTAREA
ID }); </script> 输入框的
5. 在显示编辑器的位置添加TEXTAREA输入框。
Html代码 <textarea id="content_1" name="content" style="width:700px;height:300px;visibility:hidden;"></textarea>
<!-- 注意: 如果原来有TEXTAREA,属性里只加id,width,height即可。 -->
6. 怎么获取textarea的文本内容?
①在TEXTAREA输入框后面添加隐藏input和button,代码如下:
Html代码
<input type="hidden" name="content1" id="content1" value="">
<input type="button" class="button_01" value="保 存" onclick="checkSubmit();"> ②添加事件处理代码
Js代码
<script language="javascript"> function checkSubmit() { var content = KE.u
til.getData("content_1"); //content = KE.util.escape(content); document.NewsInfoForm.content1.value = content; } </script>
参考:
———————————————————————————————————————
———
asp实例:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"
<html xmlns="
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>无标题文档</title>
</head>
<body>
<script type="text/javascript" charset="utf-8"
src="/kindedit/kindeditor.js"></script><!-- 添加kindeditor的引用 -->
<script type="text/javascript">
KE.show({
id : 'content_1',
imageUploadJson : '/kindedit/asp/upload_json.asp',
fileManagerJson : '/kindedit/asp/file_manager_json.asp',
allowFileManager : true,
afterCreate : function(id) {
KE.event.ctrl(document, 13, function() {
KE.util.setData(id);
document.forms['example'].submit();
});
KE.event.ctrl(KE.g[id].iframeDoc, 13, function() {
KE.util.setData(id);
document.forms['example'].submit();
});
}
});
</script>
<textarea id="content_1" name="content"
style="width:700px;height:300px;visibility:hidden;"></textarea>
<!-- 注意: 如果原来有TEXTAREA,属性里只加id,width,height即可。 -->
</body>
</html>
———————————————————————————————————————
———
json在线格式化篇十
《多叉树结合JavaScript树形控件实现无限级树形结构(一种构建多级有序树形结构JSON(或XML)数据源的方法)》
多叉树结合JavaScript树形控件实现无限级树形结构(一种构建多级有序树形结构JSON(或XML)数据源的方法)
一、问题研究的背景和意义
在Web应用程序开发领域,基于Ajax技术的JavaScript树形控件已经被广泛使用,它用来在Html页面上展现具有层次结构的数据项。目前市场上常见的JavaScript框架及组件库中均包含自己的树形控件,例如jQuery、Dojo、YUI、Ext JS等,还有一些独立的树形控件,例如dhtmlxTree等,这些树形控件完美的解决了层次数据的展示问题。展示离不开数据,树形控件主要利用Ajax技术从服务器端获取数据源,数据源的格式主要包括JSON、XML等,而这些层次数据一般都存储在数据库中。“无限级树形结构”,顾名思义,没有级别的限制,它的数据通常来自数据库中的无限级层次数据,这种数据的存储表通常包括id和parentId这两个字段,以此来表示数据之间的层次关系。现在问题来了,既然树形控件的数据源采用JSON或XML等格式的字符串来组织层次数据,而层次数据又存储在数据库的表中,那么如何建立起树形控件与层次数据之间的关系,换句话说,如何将数据库中的层次数据转换成对应的层次结构的JSON或XML格式的字符串,返回给客户端的JavaScript树形控件?这就是我们要解决的关键技术问题。本文将以目前市场上比较知名的Ext JS框架为例,讲述实现无限级树形结构的方法,该方法同样适用于其它类似的JavaScript树形控件。
Ext JS框架是富客户端开发中出类拔萃的框架之一。在Ext的UI控件中,树形控件无疑是最为常用的控件之一,它用来实现树形结构的视图。TreeNode用来实现静态的树形结构,AsyncTreeNode用来实现动态的异步加载树形结构,后者最为常用,它通过接收服务器端返回来的JSON格式的数据,动态生成树形结构节点。动态生成树有两种思路:一种是一次性生成全部树节点,另一种是逐级加载树节点(利用Ajax,每次点击节点时查询下一级节点)。对于大数据量的树节点来说,逐级加载是比较合适的选择,但是对于小数据量的树节点来说,一次性生成全部节点应该是最为合理的方案。在实际应用开发中,一般不会遇到特别大数据量的场景,所以一次性生成全部树节点是我们重点研究的技术点,也就是本文要解决的关键技术问题。本文以基于Ext JS的应用系统为例,讲述如何将数据库中的无限级层次数据一次性在界面中生成全部树节点(例如在界面中以树形方式一次性展示出银行所有分支机构的信息),同时对每一个层次的节点按照某一属性和规则排序,展示出有序的树形结构。
解决一次性构造无限级树形结构的问题,可以拓展出更多的应用场景,例如树形结构表格TreeGrid,一次性生成树形表格,对树形表格进行完整分页,对表格列进行全排序;或者可以利用本文的思路扩展出其他的更复杂的应用场景。
先看两个图例,有个直观上的认识:
图一,银行分支机构树形结构
图二,树形结构表格
二、详细设计方案
让我们先看两段代码片段:
以上两个程序文件是一次性生成无限级树形结构所必须的,其中最为关键的部分就是如何生成一个无限级的树形结构JSON字符串,返回给客户端的Ext树形控件。对于银行分支机构来说,需要返回类似如下的JSON串:
{
id: '100000',
text: '廊坊银行总行',
children: [
{
id: '110000',
text: '廊坊分行',
children: [
{
id: '113000',
text: '廊坊银行开发区支行',
leaf: true
},
{
id: '112000',
text: '廊坊银行解放道支行',
children: [
{
id: '112200',
text: '廊坊银行三大街支行',
leaf: true
},
{
id: '112100',
text: '廊坊银行广阳道支行',
leaf: true
}
]
},
{
id: '111000',
text: '廊坊银行金光道支行',
leaf: true
}
]
}
]
}
同时还需要对树中每一个层次的节点按照某一属性(比如分支机构编号)进行排序,以展示出有序的树形结构。
现在可以把问题概括为:
1、 把数据库中的层次数据转换成多级树形结构的JSON格式的字符串
2、 对树中每一个层次的节点按照某一属性(比如分支机构编号)进行排序
下面介绍解决问题的思路:
在数据结构这门课中,我们都学过树,无限级树形结构就可以抽象成一种多叉树结构,即每个节点下包含多个子节点的树形结构,首先就需要把数据库中的层次数据转换成多叉树结构的对象树,也就是构造出一棵多叉树。
有了数据结构,还要实现相应的算法,我们需要实现两种算法:
1、兄弟节点横向排序算法,对隶属于同一个父节点下面的所有直接子节点按照某一节点属性和规则进行排序,保持兄弟节点横向有序;
2、先序遍历算法,递归打印出无限级JSON字符串。
概括起来分为三步:
1、 构造无序的多叉树结构
2、 实现兄弟节点横向排序方法
3、 实现先序遍历方法,打印出JSON字符串
如图所示:
本文来源:http://www.guakaob.com/jianzhugongchengkaoshi/70264.html
上一篇:工作转正申请书怎么写
下一篇:益阳市三湘精英职业学校2003年