json格式转换

| 乐学园 |

【www.guakaob.com--乐学园】

json格式转换篇一
《json格式转换》

JS解析json数据(如何将json字符串转化为数组) 2011年06月09日 星期四 上午 10:47<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><TITLE> New Document </TITLE><SCRIPT LANGUAGE="JavaScript">var t="{'firstName': 'cyra', 'lastName': 'richardson', 'address': { 'streetAddress': '1 Microsoft way', 'city': 'Redmond', 'state': 'WA', 'postalCode': 98052 },'phoneNumbers': [ '425-777-7777','206-777-7777' ] }"; var jsonobj=eval('('+t+')');alert(jsonobj.firstName); alert(jsonobj.lastName);var t2="[{name:'zhangsan',age:'24'},{name:'lisi',age:'30'},{name:'wangwu',age:'16'},{name:'tianqi',age:'7'}] ";var myobj=eval(t2);for(var i=0;i<myobj.length;i++){alert(myobj[i].name);alert(myobj[i].age);}var t3="[['<a href=# onclick=openLink(14113295100,社旗县国税局桥头税务所,14113295100,d6d223892dc94f5bb501d4408a68333d,swjg_dm);>14113295100</a>','社旗县国税局桥头税务所','社旗县城郊乡长江路西段']]";//通过eval() 函数可以将JSON字符串转化为对象var obj = eval(t3);for(var i=0;i<obj.length;i++){for(var j=0;j<obj[i].length;j++){alert(obj[i][j]);}}/*//stringifier 函数的作用跟 parse 相反, 用来将一个js对象转换为 JSON 文本。var jsonText = JSON.stringify(obj); alert(jsonText);//如果基于安全的考虑的话,最好是使用一个 JSON 解析器。 一个 JSON 解析器将只接受 JSON 文本。所以是更安全的。var myObject = JSON.parse(myJSONtext, filter); //可选的 filter 参数将遍历每一个value key 值对, 并进行相关的处理。如://如myData = JSON.parse(text, function (key, value) { return key.indexOf('date') >= 0 ? new Date(value) : value; }); //stringifier 函数的作用跟 parse 相反, 用来将一个js对象转换为 JSON 文本。var myJSONText = JSON.stringifier(myObject); */</SCRIPT></HEAD><BODY></BODY></HTML>

json格式转换篇二
《Java数据格式转换成json》

操作javascript对象

JavaScript对象是由一些”键-值”对组成的,而且可以方便地使用花括号({})来定义。另一方面,JavaScript的数组则可以使用方括号([])进行动态定义。将这两种语法组合起来,可以轻松地表达复杂而且庞大的数据结构.

Douglas Crockford为利用这种简单的语法起了一个名字,叫做JSON(JavaScript Object Notation,JavaScript对象表示法)。通过这种表示法能够方便地取代数据量庞大的XML格式:

JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互

尽管有许多宣传关于 XML 如何拥有跨平台,跨语言的优势,然而,除非应用于 Web Services,否则,在普通的 Web 应用中,开发者经常为 XML 的解析伤透了脑筋,无论是服务器端生成或处理 XML,还是客户端用 JavaScript 解析 XML,都常常导致复杂的代码,极低的开发效率。实际上,对于大多数 Web 应用来说,他们根本不需要复杂的 XML 来传输数据,XML 的扩展性很少具有优势,许多 AJAX 应用甚至直接返回 HTML 片段来构建动态 Web 页面。和返回 XML 并解析它相比,返回 HTML 片段大大降低了系统的复杂性,但同时缺少了一定的灵活性。

现在, JSON 为 Web 应用开发者提供了另一种数据交换格式。让我们来看看 JSON 到底是什么,同 XML 或 HTML 片段相比,JSON 提供了更好的简单性和灵活性。 JSON 数据格式解析

和 XML 一样,JSON 也是基于纯文本的数据格式。由于 JSON 天生是为 JavaScript 准备的,因此,JSON 的数据格式非常简单,您可以用 JSON 传输一个简单的 String,Number,Boolean,也可以传输一个数组,或者一个复杂的 Object 对象。

String,Number 和 Boolean 用 JSON 表示非常简单。例如,用 JSON 表示一个简单的

除了字符 ",\,/ 和一些控制符(\b,\f,\n,\r,\t)需要编码外,其他 Unicode 字符可以直接输出。下图是一个 String 的完整表示结构:

图 1. String 的完整表示结构

一个 Number 可以根据整型或浮点数表示如下:

图 2. Number 的表示结构

这与绝大多数编程语言的表示方法一致,例如:

Boolean 类型表示为 或 。此外,JavaScript 中的 null 被表示为 ,注意,true、false 和 null 都没有双引号,否则将被视为一个 String 。

JSON 还可以表示一个数组对象,使用 [] 包含所有元素,每个元素用逗号分隔,元素可以是任意的 Value,例如,以下数组包含了一个 String,Number,Boolean 和一个 null:

Object 对象在 JSON 中是用 {} 包含一系列无序的 Key-Value 键值对表示的,实际上此处的 Object 相当于 Java 中的 Map<String, Object>,而不是 Java 的 Class 。注意 Key 只能用 String 表示。

例如,一个 Address 对象包含如下 Key-Value:

用 JSON 表示如下:

其中 Value 也可以是另一个 Object 或者数组,因此,复杂的 Object 可以嵌套表示,例如,一个 Person 对象包含 name 和 address 对象,可以表示如下:

JavaScript 处理 JSON 数据

上面介绍了如何用 JSON 表示数据,接下来,我们还要解决如何在服务器端生成 JSON 格式的数据以便发送到客户端,以及客户端如何使用 JavaScript 处理 JSON 格式的数据。 我们先讨论如何在 Web 页面中用 JavaScript 处理 JSON 数据。我们通过一个简单的

假定服务器返回的 JSON 数据是上文的:

只需将其赋值给一个 JavaScript 变量,就可以立刻使用该变量并更新页面中的信息了,相比 XML 需要从 DOM 中读取各种节点而言,JSON 的使用非常容易。我们需要做的仅仅是发送一个 Ajax 请求,然后将服务器返回的 JSON 数据赋值给一个变量即可。有许多 Ajax 框架早已包含了处理 JSON 数据的能力,例如 Prototype(一个流行的 JavaScript

库:evalJSON() 方法,能直接将服务器返回的 JSON 文本变成一个 JavaScript 变量:

服务器端输出 JSON 格式数据

下面我们讨论如何在服务器端输出 JSON 格式的数据。以 Java 为例,我们将演示将一个 Java 对象编码为 JSON 格式的文本。

将 String 对象编码为 JSON 格式时,只需处理好特殊字符即可。另外,必须用 (") 而非 (') 表示字符串:

static String string2Json(String s) {

StringBuilder sb = new StringBuilder(s.length()+20);

sb.append('\"');

for (int i=0; i<s.length(); i++) {

char c = s.charAt(i);

switch (c) {

case '\"':

sb.append("\\\"");

break;

case '\\':

sb.append("\\\\");

break;

case '/':

sb.append("\\/");

break;

case '\b':

sb.append("\\b");

break;

case '\f':

sb.append("\\f");

break;

case '\n':

sb.append("\\n");

break;

case '\r':

sb.append("\\r");

break;

将 Number 表示为 JSON 就容易得多,利用 Java 的多态,我们可以处理 Integer,Long,

要将数组编码为 JSON 格式,可以通过循环将每一个元素编码出来:

static String array2Json(Object[] array) {

if (array.length==0)

return "[]";

StringBuilder sb = new StringBuilder(array.length << 4); sb.append('[');

for (Object o : array) {

sb.append(toJson(o));

sb.append(',');

}

// 将最后添加的 ',' 变为 ']':

sb.setCharAt(sb.length()-1, ']');

return sb.toString();

}

json格式转换篇三
《将Table转化为Json格式》

将Table转化为Json格式:

/// <summary>

/// 反回JSON数据到前台

/// </summary>

/// <param name="dt">数据表</param>

/// <returns>JSON字符串</returns>

public string CreateJsonParameters(DataTable dt)

{

StringBuilder JsonString = new StringBuilder();

//Exception Handling

if (dt != null && dt.Rows.Count > 0)

{

JsonString.Append("{ ");

JsonString.Append("\"TableInfo\":[ ");

for (int i = 0; i < dt.Rows.Count; i++)

{

JsonString.Append("{ ");

for (int j = 0; j < dt.Columns.Count; j++)

{

if (j < dt.Columns.Count - 1)

{

JsonString.Append("\"" +

dt.Columns[j].ColumnName.ToString() + "\":" + "\"" +

dt.Rows[i][j].ToString() + "\",");

}

else if (j == dt.Columns.Count - 1)

{

JsonString.Append("\"" +

dt.Columns[j].ColumnName.ToString() + "\":" + "\"" +

dt.Rows[i][j].ToString() + "\"");

}

}

/**/

/*end Of String*/

if (i == dt.Rows.Count - 1)

{

JsonString.Append("} ");

}

else

{

JsonString.Append("}, ");

}

}

JsonString.Append("]}");

json格式转换篇四
《不同json数据格式之间的转换》

待转换的json数据格式为:

[{

"id":1,

"text":"菜单",

"children":[{

"id":11,

"text":"菜单1",

"state":"closed",

"children":[{

"id":111,

"text":"测试11",

"attributes":{

"key":"Custom Attribute1"

}

},{

"id":112,

"text":"测试12",

"attributes":{

"key":"xx"

},

},{

"id":113,

"text":"测试13",

"attributes":{

"key":"Custom Attribute1"

}

}]

},{

"id":12,

"text":"菜单2",

"children":[{

"id":121,

"text":"测试21",

"attributes":{

"key":"Custom Attribute1"

}

},{

"id":122,

"text":"测试22",

"attributes":{

"key":"Custom Attribute1"

}

},{

"id":123,

"text":"测试23",

"attributes":{

"key":"Custom Attribute1"

}

}]

}]

}]

该json格式为jQuery easyui tree的json数据格式,先要把它转换成微信自定义菜单的json数据格式,如:

{

"button": [

{

"name": "菜单1",

"sub_button": [

{

"type": "click",

"name": "测试11",

"key": "Custom Attribute1",

"sub_button": [ ]

},

{

"type": "click",

"name": "测试12",

"key": "xx",

"sub_button": [ ]

},

{

"type": "click",

"name": "测试13",

"key": "Custom Attribute1",

"sub_button": [ ]

}

]

},

{

"name": "菜单2",

"sub_button": [

{

"type": "click",

"name": "测试21",

"key": "Custom Attribute1",

"sub_button": [ ]

},

{

"type": "click",

"name": "测试22",

"key": "Custom Attribute1",

"sub_button": [ ]

},

{

"type": "click",

"name": "测试23",

"key": "Custom Attribute1",

"sub_button": [ ]

}

]

}

]

}

所用函数为:

private static void toWeixinMenuJson(JSONObject jsonObject, JSONObject target) {

if (Integer.parseInt(jsonObject.getString("id").toString()) != 1) {

target.put("name", jsonObject.getString("text"));

JSONObject json = null;

json = jsonObject.getJSONObject("attributes");

if (json.size() != 0) {

String url = null;

String key = null;

if (json.containsKey("url")) {

url = json.getString("url");

}

if (json.containsKey("key")) {

key = json.getString("key");

}

if (url != null) {

target.put("type", "view");

target.put("url", url);

}

if (key != null) {

target.put("type", "click");

target.put("key", key);

}

}

}

JSONArray jsonArray = (JSONArray) jsonObject.get("children");

if (jsonArray != null) {

List<JSONObject> list = new ArrayList<JSONObject>();

Iterator itr = jsonArray.iterator();

while (itr.hasNext()) {

JSONObject jo2 = new JSONObject();

list.add(jo2);

toWeixinMenuJson((JSONObject) itr.next(), jo2);

}

JSONArray ja0 = new JSONArray();

ja0.addAll(list);

if (Integer.parseInt(jsonObject.getString("id").toString()) == 1) {

target.element("button", ja0);

} else {

target.element("sub_button", ja0);

}

}

}

该函数用了递归的思想。

反过来,先要把微信自定义菜单的json数据格式转换成Query easyui tree的json数据格式,可用如下函数,该函数同样用了递归的思想。

private static void toEasyuiTreeJson(JSONObject jsonObject, JSONObject target,int i) { JSONArray array = null;

target.put("id", i);

if (jsonObject.get("button")!=null){

target.put("text", "菜单");

array=jsonObject.getJSONArray("button");

}else{

target.put("text", jsonObject.get("name"));

array=jsonObject.getJSONArray("sub_button");

}

if(jsonObject.containsKey("type")){

String type=jsonObject.getString("type");

JSONObject json=new JSONObject();

if("click".equals(type)){

json.accumulate("key", jsonObject.getString("key"));

}

if("view".equals(type)){

json.accumulate("url", jsonObject.getString("url"));

}

} } if(array!=null){ List<JSONObject> list=new ArrayList<JSONObject>(); Iterator itr=array.iterator(); while(itr.hasNext()){ JSONObject jObject=new JSONObject(); list.add(jObject); toEasyuiTreeJson((JSONObject)itr.next(), jObject, ++i); } JSONArray array2=new JSONArray(); array2.addAll(list); target.element("children",array2); }

json格式转换篇五
《JSON日期转换》

自己编写了一个工具类,处理页面提交json格式数据到后台,再进行处理成JAVA对象数据

1、DTO:Data Transfer Object,数据传送对象

2、对于日期格式的问题,也已经处理

3、json-lib-2.2.2-jdk13.jar (2.1在日期数组 json->java有问题) 工具类JsonUtil代码如下:

public class JsonUtil {

/**页面传至后台时,json数据在request的参数名称*/

public final static String JSON_ATTRIBUTE = "json";

public final static String JSON_ATTRIBUTE1 = "json1";

public final static String JSON_ATTRIBUTE2 = "json2";

public final static String JSON_ATTRIBUTE3 = "json3";

public final static String JSON_ATTRIBUTE4 = "json4";

/**

* 从一个JSON 对象字符格式中得到一个java对象,形如:

* {"id" : idValue, "name" : nameValue, "aBean" : {"aBeanId" : aBeanIdValue, ...}}

* @param object

* @param clazz

* @return

*/

public static Object getDTO(String jsonString, Class clazz){

JSONObject jsonObject = null;

try{

setDataFormat2JAVA();

jsonObject = JSONObject.fromObject(jsonString);

}catch(Exception e){

e.printStackTrace();

}

return JSONObject.toBean(jsonObject, clazz);

}

/**

* 从一个JSON 对象字符格式中得到一个java对象,其中beansList是一类的集合,形如:

* {"id" : idValue, "name" : nameValue, "aBean" : {"aBeanId" : aBeanIdValue, ...},

* beansList:[{}, {}, ...]}

* @param jsonString

* @param clazz

* @param map 集合属性的类型 (key : 集合属性名, value : 集合属性类型class) eg: ("beansList" : Bean.class)

* @return

*/

public static Object getDTO(String jsonString, Class clazz, Map map){ JSONObject jsonObject = null;

try{

setDataFormat2JAVA();

jsonObject = JSONObject.fromObject(jsonString);

}catch(Exception e){

e.printStackTrace();

}

return JSONObject.toBean(jsonObject, clazz, map);

}

/**

* 从一个JSON数组得到一个java对象数组,形如:

* [{"id" : idValue, "name" : nameValue}, {"id" : idValue, "name" : nameValue}, ...]

* @param object

* @param clazz

* @return

*/

public static Object[] getDTOArray(String jsonString, Class clazz){ setDataFormat2JAVA();

JSONArray array = JSONArray.fromObject(jsonString);

Object[] obj = new Object[array.size()];

for(int i = 0; i < array.size(); i++){

JSONObject jsonObject = array.getJSONObject(i);

obj[i] = JSONObject.toBean(jsonObject, clazz);

}

return obj;

}

/**

* 从一个JSON数组得到一个java对象数组,形如:

* [{"id" : idValue, "name" : nameValue}, {"id" : idValue, "name" : nameValue}, ...]

* @param object

* @param clazz

* @param map

* @return

public static Object[] getDTOArray(String jsonString, Class clazz, Map map){

setDataFormat2JAVA();

JSONArray array = JSONArray.fromObject(jsonString);

Object[] obj = new Object[array.size()];

for(int i = 0; i < array.size(); i++){

JSONObject jsonObject = array.getJSONObject(i);

obj[i] = JSONObject.toBean(jsonObject, clazz, map);

}

return obj;

}

/**

* 从一个JSON数组得到一个java对象集合

* @param object

* @param clazz

* @return

*/

public static List getDTOList(String jsonString, Class clazz){ setDataFormat2JAVA();

JSONArray array = JSONArray.fromObject(jsonString);

List list = new ArrayList();

for(Iterator iter = array.iterator(); iter.hasNext();){

JSONObject jsonObject = (JSONObject)iter.next();

list.add(JSONObject.toBean(jsonObject, clazz));

}

return list;

}

/**

* 从一个JSON数组得到一个java对象集合,其中对象中包含有集合属性 * @param object

* @param clazz

* @param map 集合属性的类型

* @return

*/

public static List getDTOList(String jsonString, Class clazz, Map map){ setDataFormat2JAVA();

JSONArray array = JSONArray.fromObject(jsonString);

List list = new ArrayList();

for(Iterator iter = array.iterator(); iter.hasNext();){

JSONObject jsonObject = (JSONObject)iter.next();

list.add(JSONObject.toBean(jsonObject, clazz, map));

return list;

}

/**

* 从json HASH表达式中获取一个map,该map支持嵌套功能

* 形如:{"id" : "johncon", "name" : "小强"}

* 注意commons-collections版本,必须包含

org.apache.commons.collections.map.MultiKeyMap

* @param object

* @return

*/

public static Map getMapFromJson(String jsonString) {

setDataFormat2JAVA();

JSONObject jsonObject = JSONObject.fromObject(jsonString); Map map = new HashMap();

for(Iterator iter = jsonObject.keys(); iter.hasNext();){ String key = (String)iter.next();

map.put(key, jsonObject.get(key));

}

return map;

}

/**

* 从json数组中得到相应java数组

* json形如:["123", "456"]

* @param jsonString

* @return

*/

public static Object[] getObjectArrayFromJson(String jsonString) { JSONArray jsonArray = JSONArray.fromObject(jsonString); return jsonArray.toArray();

}

/**

* 把数据对象转换成json字符串

* DTO对象形如:{"id" : idValue, "name" : nameValue, ...}

* 数组对象形如:[{}, {}, {}, ...]

* map对象形如:{key1 : {"id" : idValue, "name" : nameValue, ...}, key2 : {}, ...}

* @param object

* @return

*/

public static String getJSONString(Object object) throws Exception{

String jsonString = null;

//日期值处理器

JsonConfig jsonConfig = new JsonConfig();

jsonConfig.registerJsonValueProcessor(java.util.Date.class, new JsonDateValueProcessor());

if(object != null){

if(object instanceof Collection || object instanceof Object[]){ jsonString = JSONArray.fromObject(object, jsonConfig).toString(); }else{

jsonString = JSONObject.fromObject(object, jsonConfig).toString(); }

}

return jsonString == null ? "{}" : jsonString;

}

private static void setDataFormat2JAVA(){

//设定日期转换格式

JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(new String[] {"yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss"}));

}

public static void main(String[] arg) throws Exception{

String s = "{status : 'success'}";

System.out.println(" object : " + JsonUtil.getJSONString(s)); }

}

对于java对象转换成json数据格式时,要对日期格式化常用格式,类:JsonDateValueProcessor

import java.text.SimpleDateFormat;

import java.util.Date;

import net.sf.json.JsonConfig;

import net.sf.json.processors.JsonValueProcessor;

/*

* @author johncon

* 创建日期 2008-9-10

* json日期值处理器

*/

public class JsonDateValueProcessor implements JsonValueProcessor {

private String format = "yyyy-MM-dd HH:mm:ss";

json格式转换篇六
《将List对象列表转换成JSON格式的类》

将List对象列表转换成JSON格式的类

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。引用于

[

一般应用中,我习惯性地把结果集以更通用的IList<object>对象列表方式保存(可能会对性能有些影响)来保证类间交互时的通用性,降低函数功能对具体类的耦合。但AJAX调用时,还需要把对象列表转换成JSON数据交给前端显示。有麻烦。

研究了一下JSON的对象定义和集合定义

附件: 您所在的用户组无法下载或查看附件

感觉利用反射来生成JSON还比较方便。代码如下:

Code

[copy to clipboard]

//

// ObjectListToJSON

// Copyright (c) 2008 pcode. All rights reserved.

//

// Author(s):

//

// pcode,[email]jy@cjlu.edu.cn[/email]

// 此类用于将List<object>转换为json数据格式

// 目前仅能处理一个object的基础数据类型而且对[ { }] \等对json有伤害影响特殊符号没有特殊处理

// 希望有兄弟继续完善

using System.Reflection;

using System.Collections.Generic;

public class ObjectListToJSON

{

#region 反射一个对象所有属性和属性值和将一个对象的反射结果封装成jsons格式

/**

* 对象的全部属性和属性值。用于填写json的{}内数据

* 生成后的格式类似

* "属性1":"属性值"

* 将这些属性名和属性值写入字符串列表返回

* */

private List<string> GetObjectProperty(object o)

{

List<string> propertyslist = new List<string>();

PropertyInfo[] propertys = o.GetType().GetProperties(); foreach (PropertyInfo p in propertys)

{

propertyslist.Add("\"" + p.Name.ToString() + "\":\"" + p.GetValue(o, null) + "\"");

}

return propertyslist;

}

/**

* 将一个对象的所有属性和属性值按json的格式要求输入为一个封装后的结果。 *

* 返回值类似{"属性1":"属性1值","属性2":"属性2值","属性3":"属性值"}

*

* */

private string OneObjectToJSON(object o)

{

string result = "{";

List<string> ls_propertys = new List<string>();

ls_propertys = GetObjectProperty(o);

foreach (string str_property in ls_propertys)

{

if (result.Equals("{"))

{

result = result + str_property;

}

else

{

result = result + "," + str_property + ""; }

}

return result + "}";

}

#endregion

/**

* 把对象列表转换成json串

* */

public string toJSON(List<object> objlist)

{//覆写,给懒人一个不写classname的机会

return toJSON(objlist, string.Empty);

}

public string toJSON(List<object> objlist, string classname) {

string result = "{";

if (classname.Equals(string.Empty))//如果没有给定类的名称,那么自做聪明地安一个

{

object o = objlist[0]

classname = o.GetType().ToString();

}

result += "\"" + classname + "\":[";

bool firstline = true;//处理第一行前面不加","号

foreach (object oo in objlist)

{

if (!firstline)

{

result = result + "," + OneObjectToJSON(oo); }

else

{

result = result + OneObjectToJSON(oo) + ""; firstline = false;

}

}

return result + "]}";

}

}

OK,我们建立一个测试来验证一下它是否生效。

先建立一个对象定义person.cs

Code

[copy to clipboard]

namespace Model

{

public class Person

{

public string ID { get; set; }

public string Name { get; set; }

public string Sex { get; set; }

}

}

然后建立测试类

我用了一种非常原始的方法生成了对象列表,其实可以从数据库查询,怕把事情搞得太复杂。呵呵。

Code

[copy to clipboard]

using NUnit.Framework;

using System.Collections.Generic;

namespace JSon

{

[TestFixture]

public class TestObjectToJSON

{

[Test]

public void dotest() {

Model.Person p1 = new Model.Person();

p1.ID = "1";

p1.Name = "p1";

p1.Sex = "s1";

Model.Person p2 = new Model.Person();

p2.ID = "2";

p2.Name = "p2";

p2.Sex = "s2";

Model.Person p3 = new Model.Person(); p3.ID = "3";

p3.Name = "p3";

p3.Sex = "s3";

List<object> lp = new List<object>(); lp.Add(p1);

lp.Add(p2);

lp.Add(p3);

ObjectListToJSON t = new ObjectListToJSON(); string json = t.toJSON(lp, "persons"); System.Console.Write(json);

}

}

}

跑一下Nuint,我们想要的json串已经生成了。

json格式转换篇七
《Java中集合转换成Json格式的数据》

之前遇到过几次,java中需要把集合转换成JSON格式的数据。找到的资料也不完全,需要导的包也没有介绍完整,所以我在这里整理好了,希望下次需要用的时候,能够轻松用到。也希望遇到这个问题的童鞋们可以得到帮助。首先,先来介绍需要导入的包。(包不是最新版本,应该没有问题) 最主要的是 json-lib-2.3-jdk15-2.3 ,但是相关联的还需要下面这几个包,之前问了别人,都说只有导入上面那个包就可以了。其实是不行了。必须还要这些包:commons-lang-2.3 、ezmorph-1.0.3 、commons-collections-3.2 、commons-beanutils-core-1.7.0有了这些包,问题就基本上解决了,只剩下写几句代码了。转换的代码示例如下:HashMap<String,Object> result = new HashMap<String,Object>(); ArrayList<String> array = new ArrayList<String>();array.add("a");array.add("b");array.add("c");result.put("root",array); JSONArray jasonArray = JSONArray.fromObject(result);System.out.println(jasonArray);(把集合放到HashMap对象以键值对的形式转换)这样取出来用的时候就很方便了。

json格式转换篇八
《json数据转换》

很多时候从服务器传过来的json文本比较复杂,下面的函数可以把数组,String,Object转为JSON格式的内容。 1 JSON = { encode : function(input) { 2 if (!input)

3 return 'null'

4 switch (input.constructor)

5 { case String: return '"' + input + '"'

6 case Number: return input.toString()

7 case Boolean: return input.toString()

8 case Array :

9 var buf = []

10 for (i in input)

11 buf.push(JSON.encode(input07))

12 return '[' + buf.join(', ') + ']'

13 case Object:

14 var buf = []

15 for (k in input)

16 buf.push(k + ' : ' + JSON.encode(input[k]))

17 return '{ ' + buf.join(', ') + '} '

18 default: return 'null' }

19 }

20 }

下面是一个调用实例:

1 if (xmlhttp.readyState == 4 && xmlhttp.status == 200)

2 {var result = xmlhttp.responseText;

3 text = JSON.encode(result);

4 var gen3 = document.getElementById("gen3");

5 gen3.innerHTML = result;

?

1 }

json格式转换篇九
《JSON数据格式介绍》

JSON是 JavaScript Object Notation的简称,是一种轻量的数据表示方法。jason格式采用key:value的方式记录数据,非常直观,比XML简洁,因而大受欢迎

介绍jason格式前,先让我们看看XML格式。显然,XML 得到了相当多的关注(正面和负面的评价都有),已经在 Ajax 应用程序中广泛使用:

<request>

<firstName>Brett</firstName>

<lastName>McLaughlin</lastName>

<email>brett@newInstance.com</email>

</request>

这里的数据与前面看到的相同,但是这一次采用 XML 格式。这没什么了不起的;这只是另一种数据格式,使我们能够使用 XML 而不是纯文本和名称/值对。

本文讨论另一种数据格式,JavaScript Object Notation(JSON)。JSON 看起来既熟悉又陌生。它提供了另一种选择,选择范围更大总是好事情。

添加 JSON

在使用名称/值对或 XML 时,实际上是使用 JavaScript 从应用程序中取得数据并将数据转换成另一种数据格式。在这些情况下,JavaScript 在很大程度上作为一种数据操纵语言,用来移动和操纵来自 Web 表单的数据,并将数据转换为一种适合发送给服务器端程序的格式。

但是,有时候 JavaScript 不仅仅作为格式化语言使用。在这些情况下,实际上使用 JavaScript 语言中的对象来表示数据,而不仅是将来自 Web 表单的数据放进请求中。在这些情况下,从 JavaScript 对象中提取数据,然后再将数据放进名称/值对或 XML,就有点儿多此一举 了。这时就合适使用 JSON:JSON 允许轻松地将 JavaScript对象转换成可以随请求发送的数据(同步或异步都可以)。 JSON 并不是某种魔弹;但是,它对于某些非常特殊的情况是很好的选择。

JSON 基础

简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序。这个字符串看起来有点儿古怪(稍后会看到几个示例),但是 JavaScript 很容易解释它,而且 JSON 可以表示比名称/值对更复杂的结构。例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表。

简单 JSON 示例

按照最简单的形式,可以用下面这样的 JSON 表示名称/值对:

{ "firstName": "Brett" }

这个示例非常基本,而且实际上比等效的纯文本名称/值对占用更多的空间:

firstName=Brett

但是,当将多个名称/值对串在一起时,JSON 就会体现出它的价值了。首先,可以创建包含多个名称/值对的记录,比如:

{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" }

从语法方面来看,这与名称/值对相比并没有很大的优势,但是在这种情况下 JSON 更容易使用,而且可读性更好。例如,它明确地表示以上三个值都是同一记录的一部分;花括号使这些值有了某种联系。 值的数组

当需要表示一组值时,JSON 不但能够提高可读性,而且可以减少复杂性。例如,假设您希望表示一个人名列表。在 XML 中,需要许多开始标记和结束标记;如果使用典型的名称/值对(就像在本系列前面文章中看到的那种名称/值对),那么必须建立一种专有的数据格式,或者将键名称修改

为 person1-firstName 这样的形式。

如果使用 JSON,就只需将多个带花括号的记录分组在一起:

{ "people": [

{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" }, { "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },

{ "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" } ]}

这不难理解。在这个示例中,只有一个名为 people 的变量,值是包含三个条目的数组,每个条目是一个人的记录,其中包含名、姓和电子邮件地址。上面的示例演示如何用括号将记录组合成一个值。当然,可以使用相同的语法表示多个值(每个值包含多个记录):

{ "programmers": [

{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" }, { "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },

{ "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" } ],

"authors": [

{ "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },

{ "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" }, { "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" }

],

"musicians": [

{ "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" },

{ "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }

]

}

这里最值得注意的是,能够表示多个值,每个值进而包含多个值。但是还应该注意,在不同的主条目(programmers、authors 和 musicians)之间,记录中实际的名称/值对可以不一样。JSON 是完全动态的,允许在 JSON 结构的中间改变表示数据的方式。

在处理 JSON 格式的数据时,没有需要遵守的预定义的约束。所以,在同样的数据结构中,可以改变表示数据的方式,甚至可以以不同方式表示同一事物。

在 JavaScript 中使用 JSON

着在JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包。

将 JSON 数据赋值给变量

例如,可以创建一个新的 JavaScript 变量,然后将 JSON 格式的数据字符串直接赋值给它: 掌握了 JSON 格式之后,在 JavaScript 中使用它就很简单了。JSON 是 JavaScript 原生格式,这意味

var people =

{ "programmers": [

{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" }, { "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" }, { "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" } ],

"authors": [

{ "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },

{ "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },

{ "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" } ],

"musicians": [

{ "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" },

{ "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" } ]

}

这非常简单;现在 people 包含前面看到的 JSON 格式的数据。但是,这还不够,因为访问数据的方式似乎还不明显。

访问数据

尽管看起来不明显,但是上面的长字符串实际上只是一个数组;将这个数组放进 JavaScript 变量之后,就可以很轻松地访问它。实际上,只需用点号表示法来表示数组元素。所以,要想访问 programmers 列表的第一个条目的姓氏,只需在 JavaScript 中使用下面这样的代码: people.programmers[0].lastName;

注意,数组索引是从零开始的。所以,这行代码首先访问 people 变量中的数据;然后移动到称

为 programmers的条目,再移动到第一个记录([0]);最后,访问 lastName 键的值。结果是字符串值 “McLaughlin”。 下面是使用同一变量的几个示例。

people.authors[1].genre // Value is "fantasy"

people.musicians[3].lastName // Undefined. This refers to the fourth entry, and there isn't one

people.programmers.[2].firstName // Value is "Elliotte"

利用这样的语法,可以处理任何 JSON 格式的数据,而不需要使用任何额外的 JavaScript 工具包或 API。

修改 JSON 数据

正如可以用点号和括号访问数据,也可以按照同样的方式轻松地修改数据:

people.musicians[1].lastName = "Rachmaninov";

在将字符串转换为 JavaScript 对象之后,就可以像这样修改变量中的数据。

转换回字符串

当然,如果不能轻松地将对象转换回本文提到的文本格式,那么所有数据修改都没有太大的价值。在 JavaScript中这种转换也很简单:

String newJSONtext = people.toJSONString();

这样就行了!现在就获得了一个可以在任何地方使用的文本字符串,例如,可以将它用作 Ajax 应用程序中的请求字符串。

更重要的是,可以将任何 JavaScript 对象转换为 JSON 文本。并非只能处理原来用 JSON 字符串赋值的变量。为了对名为 myObject 的对象进行转换,只需执行相同形式的命令:

String myObjectInJSON = myObject.toJSONString();

这就是 JSON 与本系列讨论的其他数据格式之间最大的差异。如果使用 JSON,只需调用一个简单的函数,就可以获得经过格式化的数据,可以直接使用了。对于其他数据格式,需要在原始数据和格式化数据之间进行转换。即使使用 Document Object Model 这样的 API(提供了将自己的数据结构转换为文本的函数),也需要学习这个API 并使用 API 的对象,而不是使用原生的 JavaScript 对象和语法。 最终结论是,如果要处理大量 JavaScript 对象,那么 JSON 几乎肯定是一个好选择,这样就可以轻松地将数据转换为可以在请求中发送给服务器端程序的格式。

json格式转换篇十
《替换要转化为json的数据中的特殊符号》

替换要转化为json的数据中的特殊符号

1. 分析和解决

1.1 问题分析

当我们将数据库中的数据读取出来,转换为json数据的时候,中间可能会遇到这样的事情:数据库中的某些字段中的值有些特殊字符(例如:”、’、\等等)。如果在转换为json数据之前不替换的话,json可能不能验证通过,从而影响你接下来的工作。

1.2 问题解决

我这里采用一种替换转义的方式来修改数据:

将源数据中的’、”、\\、空格、换行等都替换成转义符,这样你拼接的json数据就是正常的,显示出来格式和数据库中的一样。

1.3 分享

这只是一种处理“包含特殊字符的数据转换为json数据”的方法。俗话说:条条道路通罗马。如果你们有其他的方法,谢谢来分享!

本文来源:http://www.guakaob.com/xuelileikaoshi/80444.html

    【json格式转换】相关推荐