首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

java 中的json 解码和编码有关问题

2013-01-28 
java 中的json 解码和编码问题我现在 ,想做一个 json 如何 编码 和解码 ,听说不是很难 ,我第一次做 ,请求

java 中的json 解码和编码问题
  我现在 ,想做一个 json 如何 编码 和解码 ,听说不是很难 ,我第一次做 ,请求代码。 json?java
[解决办法]
说白了就是一个字符串,用不着什么编码解码的,说的这么好听。
[解决办法]
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;
JavaBeanToJson


public 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 + "]";
}


}

[解决办法]
加解密的代码网上一大堆,普遍用的是DES或是3DES,上网搜一下吧
[解决办法]
如果怕信息泄露就不要用AJAX了,因为你在后台加密了,你前台还要用js解密这个不可取

热点排行