- 浏览: 1378853 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (328)
- JSF (27)
- 生活 (12)
- Ajax (26)
- Maven (6)
- CSS (1)
- Shale (3)
- SiteMesh (1)
- Ext (15)
- JMX (2)
- Windows技巧 (7)
- 工作感悟 (18)
- SVN (2)
- SVG (0)
- GoogleGear (0)
- RAP (2)
- SOA与WebService (3)
- 笔记本技术研究 (1)
- Microsoft (2)
- 英语学习 (3)
- PHP (7)
- web 2.0 (6)
- 语义Web (1)
- IT史话 (3)
- iText (3)
- JVM (1)
- PropertiesEditor (1)
- J2SE (33)
- Spring (2)
- Java Batch (1)
- log (2)
- Struts2 (2)
- DWR (0)
- JAAS (3)
- EJB3 (4)
- Flex (8)
- JFreeChart (1)
- WAS (0)
- 数据库 (2)
- 摄影 (0)
- SQL (1)
- Google App Engine (1)
- linux (5)
- Eclipse plugin (10)
- Testing (0)
- Portal (0)
- 移动互联网 (0)
- SWTBot (1)
最新评论
-
江奇缘:
不错!!!!!!
web.xml里<filter-mapping>中的<dispatcher>作用 -
yy8093:
commonj 第三步,那个调用的方法要在哪里调?servle ...
JAVA中多种计时器的比较与分析 -
di1984HIT:
学习了,不错~
web.xml里<filter-mapping>中的<dispatcher>作用 -
penkee:
com.lowagie.text.DocumentExcept ...
iText中输出 中文 -
氵壞男亼乀:
我想请问下 你哪个html里面引入的几个js文件没看懂!你 ...
DWR入门教程之HelloWorld
在使用DWR时我们经常需要返回一个复杂的java对象,对于这个复杂的java对象,在客户端查看其结构可是一个大问题,尤其是引用层次很深的时候,如a.b.c.d等
下面提供了一种方法,在网页上构建一个tree,把每个属性转换成一个node,这样便可以顺利的查看对象结构
下面是代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title>xxx Test </title> <style type="text/css"> #result{ background-color: #eee; padding: 3px 8px 3px 10px; border-bottom: 1px solid gray; font: 11px Verdana, Geneva, Arial, Helvetica, sans-serif; color: silver; } </style> <!-- Yahoo tree dependency --> <link type="text/css" rel="stylesheet" href="js-lib/treeview/assets/skins/sam/treeview.css"> <script src = "js-lib/yahoo/yahoo-min.js" ></script> <script src = "js-lib/event/event-min.js" ></script> <script src = "js-lib/treeview/treeview-min.js" ></script> <!-- DWR dependency --> <script type='text/javascript' src='dwr/interface/XXXSrv.js'></script> <script type='text/javascript' src='dwr/engine.js'></script> <script type='text/javascript' src='dwr/util.js'></script> <!-- JSON dependency --> <script type='text/javascript' src='js/json2.js'></script> <script type="text/javascript"> var tree; function printObjectTree(Obj,Node){ for(attr in Obj){ var value=Obj[attr]; var type=typeof(value); if(type =='object'){ var tmpNode = new YAHOO.widget.TextNode(attr, Node, true); printObjectTree(value,tmpNode); }else{ var result=attr+':'+ value; var tmpNode = new YAHOO.widget.TextNode(result, Node, false); } } } function parseObj(Obj){ var text=JSON.stringify(Obj); return text; } function callback(msg){ //show result in plain text var text=parseObj(msg); document.getElementById('result').innerHTML=text; //show result in tree format tree=new YAHOO.widget.TreeView("tree") var root = tree.getRoot(); //build the tree printObjectTree(msg,root); //draw tree tree.draw(); } function getViewByIDTest(){ var viewID = $('viewID').value; XXX.getViewByID(viewID,callback); } function getViewByIdReloadTest(){ var viewID = $('viewID').value; XXX.getViewByIdReload(viewID,true,callback); } function getRootViewByAppTest(){ var rootView = $('rootView').value; XXX.getRootViewByApp(rootView,callback); } function getAllViewsTest(){ var allView = $('allView').value; XXX.getAllViews(allView,callback); } function getSubViewsTest(){ var subView = $('subView').value; XXX.getSubViews(subView,callback); } function getVisibleSubViewsTest(){ var visibleSubView = $('visibleSubView').value; XXX.getVisibleSubViews(visibleSubView,callback); } </script> </head> <body onload='dwr.util.useLoadingMessage()'> <h1>This page is for XXX Test Only</h1> <table> <tr> <td><input id="viewID" name="viewID" value="tableView" type="text" /></td> <td><input type='button' value='getViewByID' onclick='getViewByIDTest();' /></td> </tr> <tr> <td><input id="viewID" name="viewID" value="tableView" type="text" /></td> <td><input type='button' value='getViewByIdReload' onclick='getViewByIdReloadTest();' /></td> </tr> <tr> <td><input id="rootView" name="rootView" value="SmartKYC" type="text" /></td> <td><input type='button' value='getRootViewByApp' onclick='getRootViewByAppTest();' /></td> </tr> <tr> <td><input id="allView" name="allView" type="text" /></td> <td><input type='button' value='getAllViews' onclick='getAllViewsTest();' /></td> </tr> <tr> <td><input id="subView" name="subView" value="SmarKYC_Case" type="text" /></td> <td><input type='button' value='getSubViews' onclick='getSubViewsTest();' /></td> </tr> <tr> <td><input id="visibleSubView" name="visibleSubView" value="SmarKYC_Case" type="text" /></td> <td><input type='button' value='getVisibleSubViews' onclick='getVisibleSubViewsTest();' /></td> </tr> </table> <div id="result"></div> <div id="tree"></div> </body> </html>
JSON2.js是用于将javascript对象转换成json text的,可以从http://www.JSON.org/js.html 下载,下面也给出其源代码:
/* http://www.JSON.org/json2.js 2008-07-15 Public Domain. NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. See http://www.JSON.org/js.html This file creates a global JSON object containing two methods: stringify and parse. JSON.stringify(value, replacer, space) value any JavaScript value, usually an object or array. replacer an optional parameter that determines how object values are stringified for objects. It can be a function or an array. space an optional parameter that specifies the indentation of nested structures. If it is omitted, the text will be packed without extra whitespace. If it is a number, it will specify the number of spaces to indent at each level. If it is a string (such as '\t' or ' '), it contains the characters used to indent at each level. This method produces a JSON text from a JavaScript value. When an object value is found, if the object contains a toJSON method, its toJSON method will be called and the result will be stringified. A toJSON method does not serialize: it returns the value represented by the name/value pair that should be serialized, or undefined if nothing should be serialized. The toJSON method will be passed the key associated with the value, and this will be bound to the object holding the key. For example, this would serialize Dates as ISO strings. Date.prototype.toJSON = function (key) { function f(n) { // Format integers to have at least two digits. return n < 10 ? '0' + n : n; } return this.getUTCFullYear() + '-' + f(this.getUTCMonth() + 1) + '-' + f(this.getUTCDate()) + 'T' + f(this.getUTCHours()) + ':' + f(this.getUTCMinutes()) + ':' + f(this.getUTCSeconds()) + 'Z'; }; You can provide an optional replacer method. It will be passed the key and value of each member, with this bound to the containing object. The value that is returned from your method will be serialized. If your method returns undefined, then the member will be excluded from the serialization. If the replacer parameter is an array, then it will be used to select the members to be serialized. It filters the results such that only members with keys listed in the replacer array are stringified. Values that do not have JSON representations, such as undefined or functions, will not be serialized. Such values in objects will be dropped; in arrays they will be replaced with null. You can use a replacer function to replace those with JSON values. JSON.stringify(undefined) returns undefined. The optional space parameter produces a stringification of the value that is filled with line breaks and indentation to make it easier to read. If the space parameter is a non-empty string, then that string will be used for indentation. If the space parameter is a number, then the indentation will be that many spaces. Example: text = JSON.stringify(['e', {pluribus: 'unum'}]); // text is '["e",{"pluribus":"unum"}]' text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t'); // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]' text = JSON.stringify([new Date()], function (key, value) { return this[key] instanceof Date ? 'Date(' + this[key] + ')' : value; }); // text is '["Date(---current time---)"]' JSON.parse(text, reviver) This method parses a JSON text to produce an object or array. It can throw a SyntaxError exception. The optional reviver parameter is a function that can filter and transform the results. It receives each of the keys and values, and its return value is used instead of the original value. If it returns what it received, then the structure is not modified. If it returns undefined then the member is deleted. Example: // Parse the text. Values that look like ISO date strings will // be converted to Date objects. myData = JSON.parse(text, function (key, value) { var a; if (typeof value === 'string') { a = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value); if (a) { return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], +a[5], +a[6])); } } return value; }); myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) { var d; if (typeof value === 'string' && value.slice(0, 5) === 'Date(' && value.slice(-1) === ')') { d = new Date(value.slice(5, -1)); if (d) { return d; } } return value; }); This is a reference implementation. You are free to copy, modify, or redistribute. This code should be minified before deployment. See http://javascript.crockford.com/jsmin.html USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO NOT CONTROL. */ /*jslint evil: true */ /*global JSON */ /*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours, getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join, lastIndex, length, parse, propertyIsEnumerable, prototype, push, replace, slice, stringify, test, toJSON, toString */ if (!this.JSON) { // Create a JSON object only if one does not already exist. We create the // object in a closure to avoid creating global variables. JSON = function () { function f(n) { // Format integers to have at least two digits. return n < 10 ? '0' + n : n; } Date.prototype.toJSON = function (key) { return this.getUTCFullYear() + '-' + f(this.getUTCMonth() + 1) + '-' + f(this.getUTCDate()) + 'T' + f(this.getUTCHours()) + ':' + f(this.getUTCMinutes()) + ':' + f(this.getUTCSeconds()) + 'Z'; }; String.prototype.toJSON = Number.prototype.toJSON = Boolean.prototype.toJSON = function (key) { return this.valueOf(); }; var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, escapeable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, gap, indent, meta = { // table of character substitutions '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '"' : '\\"', '\\': '\\\\' }, rep; function quote(string) { // If the string contains no control characters, no quote characters, and no // backslash characters, then we can safely slap some quotes around it. // Otherwise we must also replace the offending characters with safe escape // sequences. escapeable.lastIndex = 0; return escapeable.test(string) ? '"' + string.replace(escapeable, function (a) { var c = meta[a]; if (typeof c === 'string') { return c; } return '\\u' + ('0000' + (+(a.charCodeAt(0))).toString(16)).slice(-4); }) + '"' : '"' + string + '"'; } function str(key, holder) { // Produce a string from holder[key]. var i, // The loop counter. k, // The member key. v, // The member value. length, mind = gap, partial, value = holder[key]; // If the value has a toJSON method, call it to obtain a replacement value. if (value && typeof value === 'object' && typeof value.toJSON === 'function') { value = value.toJSON(key); } // If we were called with a replacer function, then call the replacer to // obtain a replacement value. if (typeof rep === 'function') { value = rep.call(holder, key, value); } // What happens next depends on the value's type. switch (typeof value) { case 'string': return quote(value); case 'number': // JSON numbers must be finite. Encode non-finite numbers as null. return isFinite(value) ? String(value) : 'null'; case 'boolean': case 'null': // If the value is a boolean or null, convert it to a string. Note: // typeof null does not produce 'null'. The case is included here in // the remote chance that this gets fixed someday. return String(value); // If the type is 'object', we might be dealing with an object or an array or // null. case 'object': // Due to a specification blunder in ECMAScript, typeof null is 'object', // so watch out for that case. if (!value) { return 'null'; } // Make an array to hold the partial results of stringifying this object value. gap += indent; partial = []; // If the object has a dontEnum length property, we'll treat it as an array. if (typeof value.length === 'number' && !(value.propertyIsEnumerable('length'))) { // The object is an array. Stringify every element. Use null as a placeholder // for non-JSON values. length = value.length; for (i = 0; i < length; i += 1) { partial[i] = str(i, value) || 'null'; } // Join all of the elements together, separated with commas, and wrap them in // brackets. v = partial.length === 0 ? '[]' : gap ? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' : '[' + partial.join(',') + ']'; gap = mind; return v; } // If the replacer is an array, use it to select the members to be stringified. if (rep && typeof rep === 'object') { length = rep.length; for (i = 0; i < length; i += 1) { k = rep[i]; if (typeof k === 'string') { v = str(k, value); if (v) { partial.push(quote(k) + (gap ? ': ' : ':') + v); } } } } else { // Otherwise, iterate through all of the keys in the object. for (k in value) { if (Object.hasOwnProperty.call(value, k)) { v = str(k, value); if (v) { partial.push(quote(k) + (gap ? ': ' : ':') + v); } } } } // Join all of the member texts together, separated with commas, // and wrap them in braces. v = partial.length === 0 ? '{}' : gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' : '{' + partial.join(',') + '}'; gap = mind; return v; } } // Return the JSON object containing the stringify and parse methods. return { stringify: function (value, replacer, space) { // The stringify method takes a value and an optional replacer, and an optional // space parameter, and returns a JSON text. The replacer can be a function // that can replace values, or an array of strings that will select the keys. // A default replacer method can be provided. Use of the space parameter can // produce text that is more easily readable. var i; gap = ''; indent = ''; // If the space parameter is a number, make an indent string containing that // many spaces. if (typeof space === 'number') { for (i = 0; i < space; i += 1) { indent += ' '; } // If the space parameter is a string, it will be used as the indent string. } else if (typeof space === 'string') { indent = space; } // If there is a replacer, it must be a function or an array. // Otherwise, throw an error. rep = replacer; if (replacer && typeof replacer !== 'function' && (typeof replacer !== 'object' || typeof replacer.length !== 'number')) { throw new Error('JSON.stringify'); } // Make a fake root object containing our value under the key of ''. // Return the result of stringifying the value. return str('', {'': value}); }, parse: function (text, reviver) { // The parse method takes a text and an optional reviver function, and returns // a JavaScript value if the text is a valid JSON text. var j; function walk(holder, key) { // The walk method is used to recursively walk the resulting structure so // that modifications can be made. var k, v, value = holder[key]; if (value && typeof value === 'object') { for (k in value) { if (Object.hasOwnProperty.call(value, k)) { v = walk(value, k); if (v !== undefined) { value[k] = v; } else { delete value[k]; } } } } return reviver.call(holder, key, value); } // Parsing happens in four stages. In the first stage, we replace certain // Unicode characters with escape sequences. JavaScript handles many characters // incorrectly, either silently deleting them, or treating them as line endings. cx.lastIndex = 0; if (cx.test(text)) { text = text.replace(cx, function (a) { return '\\u' + ('0000' + (+(a.charCodeAt(0))).toString(16)).slice(-4); }); } // In the second stage, we run the text against regular expressions that look // for non-JSON patterns. We are especially concerned with '()' and 'new' // because they can cause invocation, and '=' because it can cause mutation. // But just to be safe, we want to reject all unexpected forms. // We split the second stage into 4 regexp operations in order to work around // crippling inefficiencies in IE's and Safari's regexp engines. First we // replace the JSON backslash pairs with '@' (a non-JSON character). Second, we // replace all simple value tokens with ']' characters. Third, we delete all // open brackets that follow a colon or comma or that begin the text. Finally, // we look to see that the remaining characters are only whitespace or ']' or // ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval. if (/^[\],:{}\s]*$/. test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@'). replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']'). replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { // In the third stage we use the eval function to compile the text into a // JavaScript structure. The '{' operator is subject to a syntactic ambiguity // in JavaScript: it can begin a block or an object literal. We wrap the text // in parens to eliminate the ambiguity. j = eval('(' + text + ')'); // In the optional fourth stage, we recursively walk the new structure, passing // each name/value pair to a reviver function for possible transformation. return typeof reviver === 'function' ? walk({'': j}, '') : j; } // If the text is not JSON parseable, then a SyntaxError is thrown. throw new SyntaxError('JSON.parse'); } }; }(); }
另外一些yui的js需要自己下载。
发表评论
-
超强1000个jquery极品插件!(连载中。。。。最近更新20090710)
2009-11-26 16:01 4701花N长时间积累的Jquery插件,希望大家喜欢。大家 ... -
jquery cycle plugin
2009-11-04 15:38 2535‹‹ home jQuery Cycle Pl ... -
VIM技巧
2009-04-24 16:06 1822(1).w跳到下面一个单词(word) (2).b跳到上面一 ... -
HTML 特殊字符表
2009-04-01 16:01 1634With the exception of HTML 2.0 ... -
Web开发中不可缺少的浏览器相关工具
2009-03-24 13:45 1845整理了一些Web前端开发的资源,包括有浏览器开发工具,Micr ... -
jsp重定向forward和sendRedirect的比较
2008-12-05 12:28 7305JSP的重定向有两种:forw ... -
AJAX开发简略 (第一部分)7.1、AJAX应用到的技术
2008-11-14 12:18 1930在使用浏览器浏览网页的时候,当页面刷新很慢的时候,你的浏览器在 ... -
JSON的三个好处
2008-10-27 10:38 2490JSON的三个好处收藏 <script>f ... -
自定义可排序表格
2008-10-15 15:22 1978首先,定义一个js: tableSort.js: func ... -
DWR对象构造,深入分析dwr中的DWRUtil.getValues
2008-09-12 09:51 2131当你需要通过dwr完成类似提交form的操作,了解DWRU ... -
深入分析dwr中的DWRUtil.$
2008-09-12 09:47 1358from:http://blog.csdn.net/pwl ... -
DWR中数组的使用
2008-07-24 09:28 3522近日研究DWR,对于数组的转换始终有些不太明白,昨天终于了解了 ... -
Java open source forum大搜捕
2008-04-21 00:13 6611JIVE:这是个很多人非常熟悉的forum,可惜它3.0版本之 ... -
白话 Ajax 及其入门基础
2008-03-26 10:17 1686一、白话Ajax的原理 这个可以从 C/S 和 B/S 的原理 ... -
DWR入门教程之提示性文字
2008-03-25 15:40 2382DWR可以让您做个简单的 ... -
DWR入门教程之HelloWorld
2008-03-25 14:26 21139说明:这本是林信良(良葛格)的专栏 的文章,但是受不了繁体字的 ... -
2007年最新web2.0开源程序代码集合
2008-03-20 12:29 1784来自:http://www.prothink.cn/blog/ ... -
Web开发技术史话
2008-03-20 12:18 16841. 荒芜年代 1990-1 ... -
css教程–十步学会用css建站(全)
2008-03-19 12:58 2775本教程主要参考Creating a CSS Layout fr ... -
Tablesorter
2008-03-04 00:42 6186Tablesorter是一个非常好用的基于jQuery的表格排 ...
相关推荐
java解析xml文件生成json对象,方便操作,下载后导入eclipse,加入相关的jar包后加载至类路径便可测试该工具类,很好用!!!
纯javascript实现json与对象的互相转换完整项目,原创
如果是作为客户端的...本人碰到需要用开发基于Struts2的HTTP+JSON返回类型接口就是基于既定框架结构下进行的。 Struts2返回JSON有两种方式:1.使用Servlet的输出流写入JSON字符串;2.使用Struts2对JSON的扩展。
转换 JSON 简单转换 JSON 对象结构。 轻松重命名 JSON 键。为什么? 该节点模块的第一个目标是修改和维护的许多翻译文件的结构。 请注意,输入文件的值永远不会改变,但结构信息会改变。在您的节点项目中使用它 npm ...
本文实例讲述了JSON字符串和JSON对象相互转化的方法。分享给大家供大家参考,具体如下: 将json字符串转换为json对象的方法。在数据传输过程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,...
json viewer中文版支持JSON字符串查看和格式化,将功能合二为一,使用起来非常的方便,以前觉得json可读性差的朋友可以下载这个工具试一试。...4、JSON Viewer支持插件允许您自定义的方式显示JSON对象。
C# 获取json字段中指定的值,省去写对象的烦恼,从而提升了代码的可读性,加速了json格式数据的解析和管理,直接调用有用的数据
c#两种简单的json类和对象的序列化和解析。一种使用Hashtable序列化和解析;一种使用实体类序列化和解析。需要借助第三方Newtonsoft.Json.dll。
提出了一种基于JSON的对象序列化算法,该算法通过分析JSON文法并建立对象导航图,透明地将Java对象序列化成JSON表达式,使客户端能够很好地利用JavaScript引擎来解析JSON响应,有效地解决了解析XML所造成的缺陷。
json-20230227.jar下载,org.json是一款 veteran 的 Java JSON 处理库。它提供了一组简单的 Java APIs 来处理 JSON,简化了 Java...5. 支持嵌套 JSON 对象:org.json 支持解析嵌套的 JSON 对象结构。 6. 双向转换:org.jso
目录JSON数据结构简介JSON 表示对象JSON 格式表示数组JSON嵌套JSON数据嵌套1JSON数据嵌套2JSON数据嵌套3 JSON数据结构简介 JSON数据结构一种与开发语言无关的、轻量级的数据存储格式,全称JavaScript Object ...
JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 ...
替换json对象中的key最佳方案 JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储...
在当前的浏览器上,这个文件什么都不做,更喜欢内置的JSON对象。没有理由使用这个文件,除非命运迫使你支持IE8,这是没有人应该再次做的事情。 cycle.js:这个文件包含两个函数,JSON.decycle和JSON。retrocycle,它...
jquery.json-viewer, 用于显示JSON数据的jQuery插件 jQuery浏览器JSON浏览器是一个jQuery插件,它可以通过将JSON对象转化为HTML来轻松显示JSON对象。功能:语法高亮显示在单击时折叠和展开子节点可以点击链接易于...
C#Json插件 Newtonsoft.Json/json.net 这是一个可以用于.NET的Json辅助工具类。它可以将对对象序列化为json字符串
比较JSON对象以获取结构相等性,尽管实际内容有所不同 安装 npm install --save json-structure-diff 或者 bower install --save json-structure-diff 用法 NPM: var compare = require ( 'json-structure-diff' ...
最近在处理一个前端功能的时候,遇到了一个问题,原本的系统是使用的xml来存储数据的,而在新的系统上,想要转换为json对象存储,于是就考虑到直接将xml对象转换为json对象。 目前为止,通用的转换方式我还没有找到...
完成json 基本结构(键值对、对象、数组、字符串)的解析, 完成对true、false、null、整数的解析, 完成浮点数的解析; 完成科学计数法表示的数的解析; 完成json 文本的格式化。添加一个命令行参数-pretty,对于...
工具数据库已包含,只需在iis挂上网站站点,然后修改根目录下的ajaxShow.html的66行,url修改成自己的站点网址,就可以测试