java 中的json 解码和编码问题 我现在 ,想做一个 json 如何 编码 和解码 ,听说不是很难 ,我第一次做 ,请求代码。json java 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 JSON用于描述数据结构,有以下形式存在。 对象 (object):一个对象以“{”开始,并以“}”退出。一个对象包含一系列非排序的名称/值对,每个名称/值对之间使用“,”分区。 名称/值(collection):名称和值之间使用“:”隔开,一般的形式是:{name:value}一个名称是一个字符串; 一个值可以是一个字符串,一个数值,一个对象,一个布林值,一个有串行表,或者一个null值。 值的有串行表(Array):一个或者多个值用“,”分区后,使用“[”,“]”括起来就形成了这样的列表,形如:[collection, collection] 字符串:以""括起来的一串字符。 数值:一系列0-9的数字组合,可以为负数或者小数。还可以用“e”或者“E”表示为指数形式。 布林值:表示为 true 或者 false。在很多语言中它被为和解释为数组。JSON的格式描述可以参考RFC 4627。应用领域WEB开发JSON最开始被广泛的应用于WEB应用的开发,随着Web2.0的方兴未艾,JSON在WEB数据传输领域占有重要的地位。NoSQL数据库相对于传统的关系型数据库,一些基于文档存储的NoSQL非关系型数据库选择JSON作为其数据存储格式,比较出名的产品有:MongoDB、CouchDB、RavenDB等。举例{ "firstName": "John", "lastName": "Smith", "male": true, "age": 25, "address": { "streetAddress": "21 2nd Street", "city": "New York", "state": "NY", "postalCode": "10021" }, "phoneNumber": [ { "type": "home", "number": "212 555-1234" }, { "type": "fax", "number": "646 555-4567" } ] }安全性问题读取 JSON由于 JSON 是 JavaScript 的子集,所以一般都会使用 eval() 作为读取数据的方式,如果是针对可靠的数据来源,在不支持原生 JSON 解析的浏览器上面这是最快速的方法。然而由于 eval 方法同样可以执行任意的 JavaScript 代码,因此当数据来源不可靠时则可能产生安全性问题。如下面的例子,直接用 eval 执行时会跳转:var json = { message: (function () { window.location='http://zh.wikipedia.org/wiki/JSON#.E5.AE.89.E5.85.A8.E6.80.A7.E5.95.8F.E9.A1.8C'; })()}; 使用JSON开发包呗:http://www.json.org/java/index.html 我给你发两个例子吧。。我以前自己写的,感觉这个就是原型,在复杂的json串也是在这基础之上添加的。我刚开始也不会用json串,但是通过一天的学习和自己尝试之后,现在一般的json串是没有问题了。。解决json一般有两种方式,一个是MapperfromObject那种网上的例子很多,就不说了。我用的是第二种:当然,第二种需要建javaBean的类首先,需要jar包:import org.codehaus.jackson.map.ObjectMapper;JavaBeanToJsonpublic class JavaBeanToJson { public static void main(String[] args) { ArrayList<Student> list=new ArrayList<Student>(); Student s1=new Student(); s1.setName("leilei"); s1.setAge(23); Student s2=new Student(); s2.setName("leilei02"); //s2.setAge(23); list.add(s1); list.add(s2); StringWriter str=new StringWriter(); ObjectMapper objectMapper=new ObjectMapper(); try { objectMapper.writeValue(str, list); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(str); }}JsonToJavaBean:public class JsonToJavaBean { public static void main(String[] args) { String str="{\"student\":[{\"name\":\"leilei\",\"age\":23,\"gender\":true},{\"name\":\"leilei02\",\"age\":23,\"gender\":false}]}"; Student stu = null; List<Student> list = null; try { ObjectMapper objectMapper=new ObjectMapper(); StudentList studentList=objectMapper.readValue(str, StudentList.class); list=studentList.getStudent(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } for(Student s:list){ System.out.println(s.getName()+" "+s.getAge()+" "+s.isGender()); } }}javaBean:public class Student { private String name; private int age; private boolean gender; //private StudentClass studentClass; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public boolean isGender() { return gender; } public void setGender(boolean gender) { this.gender = gender; } /*public StudentClass getStudentClass() { return studentClass; } public void setStudentClass(StudentClass studentClass) { this.studentClass = studentClass; } @Override public String toString() { return "Student [age=" + age + ", name=" + name + ", studentClass=" + studentClass + "]"; }*/ @Override public String toString() { return "Student [age=" + age + ", name=" + name + "]"; } } 生成JSON对象JSONObject json=new JSONObject("{success:false,num:1}");操作JSON内容json.put("msg","result msg");输出JSON内容System.out.println(json.toString()); json的开发组件,如果用jboss as可以考虑resteasy //json格式转换成javaBean对象的方法 public static void main(String[] args) { String str="{\"student\":[{\"name\":\"leilei\",\"age\":23},{\"name\":\"leilei02\",\"age\":23}]}"; Student stu = null; List<Student> list = null; try { ObjectMapper objectMapper=new ObjectMapper(); StudentList studentList=objectMapper.readValue(str, StudentList.class); list=studentList.getStudent(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } for(Student s:list){ System.out.println(s.getName()); } } json-lib.jar 可以从list json字符串 map自动生成json,也可以用jsonBinder,也可以自己直接拼接 你们说的 我也知道 我是 想问 就比如说 json-lib.jar 在这个jar 包中 他自己 有没有 已经写好的 用来 编码 和 解码 的方法 或者 说是 那个对象 ,如果 他们 没有提供 ,那么 我自己 就 写一个,具体代码 向你们求助??? 加解密的代码网上一大堆,普遍用的是DES或是3DES,上网搜一下吧 如果怕信息泄露就不要用AJAX了,因为你在后台加密了,你前台还要用js解密这个不可取 我说 的是 json ,我不用ajax 你json干嘛要编码和解码呢还不是要给前台或后台接收 actionform一段代码报错,请高手赐教。 开发个什么系统好啊??? 使用 spring ,hibernate 并发读取修改数据时,同步无效,求解决办法 我很菜,想问问关于反射的问题!! 请问displaytag的一个用法 struts中关于页面跳转问题?? tomcat发布时出现错误 一道java面试题 在stateless bean 中进行事务操作,是不是可行?高分相送----在线等待 jbuilder和sql server的连接问题,怎么也连不上,郁闷中……,错误如下: 【请教】Struts2交给Spring管理后 出现的问题 程序中的char[]越来越多,求助!
名称/值(collection):名称和值之间使用“:”隔开,一般的形式是:{name:value}一个名称是一个字符串; 一个值可以是一个字符串,一个数值,一个对象,一个布林值,一个有串行表,或者一个null值。 值的有串行表(Array):一个或者多个值用“,”分区后,使用“[”,“]”括起来就形成了这样的列表,形如:[collection, collection] 字符串:以""括起来的一串字符。
数值:一系列0-9的数字组合,可以为负数或者小数。还可以用“e”或者“E”表示为指数形式。
布林值:表示为 true 或者 false。在很多语言中它被为和解释为数组。JSON的格式描述可以参考RFC 4627。
应用领域
WEB开发JSON最开始被广泛的应用于WEB应用的开发,随着Web2.0的方兴未艾,JSON在WEB数据传输领域占有重要的地位。
NoSQL数据库相对于传统的关系型数据库,一些基于文档存储的NoSQL非关系型数据库选择JSON作为其数据存储格式,比较出名的产品有:MongoDB、CouchDB、RavenDB等。
举例{
"firstName": "John",
"lastName": "Smith",
"male": true,
"age": 25,
"address":
{
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": "10021"
},
"phoneNumber":
[
{
"type": "home",
"number": "212 555-1234"
},
{
"type": "fax",
"number": "646 555-4567"
}
]
}安全性问题
读取 JSON由于 JSON 是 JavaScript 的子集,所以一般都会使用 eval() 作为读取数据的方式,如果是针对可靠的数据来源,在不支持原生 JSON 解析的浏览器上面这是最快速的方法。然而由于 eval 方法同样可以执行任意的 JavaScript 代码,因此当数据来源不可靠时则可能产生安全性问题。如下面的例子,直接用 eval 执行时会跳转:var json = {
message: (function () { window.location='http://zh.wikipedia.org/wiki/JSON#.E5.AE.89.E5.85.A8.E6.80.A7.E5.95.8F.E9.A1.8C'; })()
};
我以前自己写的,感觉这个就是原型,在复杂的json串也是在这基础之上添加的。
我刚开始也不会用json串,但是通过一天的学习和自己尝试之后,现在一般的json串是没有问题了。。
解决json一般有两种方式,一个是MapperfromObject
那种网上的例子很多,就不说了。
我用的是第二种:
当然,第二种需要建javaBean的类
首先,需要jar包:import org.codehaus.jackson.map.ObjectMapper;
JavaBeanToJsonpublic class JavaBeanToJson {
public static void main(String[] args) {
ArrayList<Student> list=new ArrayList<Student>();
Student s1=new Student();
s1.setName("leilei");
s1.setAge(23);
Student s2=new Student();
s2.setName("leilei02");
//s2.setAge(23);
list.add(s1);
list.add(s2);
StringWriter str=new StringWriter();
ObjectMapper objectMapper=new ObjectMapper();
try {
objectMapper.writeValue(str, list);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(str);
}
}
JsonToJavaBean:public class JsonToJavaBean {
public static void main(String[] args) {
String str="{\"student\":[{\"name\":\"leilei\",\"age\":23,\"gender\":true},{\"name\":\"leilei02\",\"age\":23,\"gender\":false}]}";
Student stu = null;
List<Student> list = null;
try {
ObjectMapper objectMapper=new ObjectMapper();
StudentList studentList=objectMapper.readValue(str, StudentList.class);
list=studentList.getStudent();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for(Student s:list){
System.out.println(s.getName()+" "+s.getAge()+" "+s.isGender());
}
}
}
javaBean:public class Student {
private String name;
private int age;
private boolean gender;
//private StudentClass studentClass;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean isGender() {
return gender;
}
public void setGender(boolean gender) {
this.gender = gender;
}
/*public StudentClass getStudentClass() {
return studentClass;
}
public void setStudentClass(StudentClass studentClass) {
this.studentClass = studentClass;
}
@Override
public String toString() {
return "Student [age=" + age + ", name=" + name + ", studentClass="
+ studentClass + "]";
}*/
@Override
public String toString() {
return "Student [age=" + age + ", name=" + name + "]";
}
}
JSONObject json=new JSONObject("{success:false,num:1}");操作JSON内容
json.put("msg","result msg");输出JSON内容
System.out.println(json.toString());
public static void main(String[] args) {
String str="{\"student\":[{\"name\":\"leilei\",\"age\":23},{\"name\":\"leilei02\",\"age\":23}]}";
Student stu = null;
List<Student> list = null;
try {
ObjectMapper objectMapper=new ObjectMapper();
StudentList studentList=objectMapper.readValue(str, StudentList.class);
list=studentList.getStudent(); }
catch (Exception e) { // TODO Auto-generated catch block
e.printStackTrace(); }
for(Student s:list){
System.out.println(s.getName());
}
}