一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

java将对象转化为字符串的实例

时间:2016-07-13 编辑:简简单单 来源:一聚教程网

对象转换String类型的三种方法

一、采用Object.toString()

toString方法是java.lang.Object对象的一个public方法。在java中任何对象都会继承Object对象,所以一般来说任何对象都可以调用toString这个方法。这是采用该种方法时,常派生类会覆盖Object里的toString()方法。
但是在使用该方法时要注意,必须保证Object不是null值,否则将抛出NullPointerException异常。

二、采用(String)Object

 该方法是一个标准的类型转换的方法,可以将Object转换为String。但是在使用该方法是要注意的是需要转换的类型必须是能够转换为String的,否则会出现CalssCastException异常错误。


Object o = new Integer(100);
String string = (String)o;

这段程序代码会出现java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String。因为将Integer类型强制转换为String类型,无法通过。

三、String.valueOf(Object)

上面我们使用Object.toString()方法时需要担心null问题。但是使用该方法无需担心null值问题。因为在使用String.valueOf(Object)时,它会判断Object是否为空值,如果是,则返回null。下面为String.valueOf(Object)的源码:


public static String valueOf(Object obj) {
     return (obj == null) ? "null" : obj.toString();

}


从上面我们可以看出两点:一是不需要担心null问题。二是它是以toString()方法为基础的。
但是一定要注意:当object为null时,String.valueOf(object)的值是字符串对象:"null",而不是null!!!


例子,

 代码如下 复制代码

package test;
class A{
 int a;
 int b;
 public int getA() {
  return a;
 }

 public void setA(int a) {
  this.a = a;
 }

 
 public int getB() {
  return b;
 }

 public void setB(int b) {
  this.b = b;
 }


}
public class Test {

 public static void main(String args[]){
  A a = new A();
  a.setA(8);
  a.setB(9);
  System.out.println("a.a:"+a.a);
  System.out.println("a.b:"+a.b);
  System.out.println(a);
 }
}

运行结果为:


a.a:8
a.b:9
test.A@15093f1

可以看到,本来我是想输出a和b的值,但是结果的第三行却不是我们想要的结果。为什么呢?

Object中有一个toString()的方法,但不幸的是我们需要重写这个方法才能按照我们自己的意愿输出,将上面的程序稍作修改,即添加改写toString函数的代码:

 代码如下 复制代码


package test;
class A{
 int a;
 int b;
 public int getA() {
  return a;
 }

 public void setA(int a) {
  this.a = a;
 }

 
 public int getB() {
  return b;
 }

 public void setB(int b) {
  this.b = b;
 }

 public String toString(){
  return "A.a:"+a+";A.b:"+b;
 }

}
public class Test {

 public static void main(String args[]){
  A a = new A();
  a.setA(8);
  a.setB(9);
  System.out.println("a.a:"+a.a);
  System.out.println("a.b:"+a.b);
  System.out.println(a);
 }
}

运行的结果为:


a.a:8
a.b:9
A.a:8;A.b:9


1.简单的解析json字符串

首先将json字符串转换为json对象,然后再解析json对象,过程如下。

 代码如下 复制代码
JSONObject jsonObject = JSONObject.fromObject(jsonStr);

根据json中的键得到它的值

 代码如下 复制代码

String name = jsonObject.getString("name");
int num = jsonObject.getInt("num");
String sex = jsonObject.getString("sex");
int age = jsonObject.getInt("age");


2.将json字符串转换为java对象

同样先将json字符串转换为json对象,再将json对象转换为java对象,如下所示。

 代码如下 复制代码
JSONObject obj = new JSONObject().fromObject(jsonStr);//将json字符串转换为json对象

将json对象转换为java对象

 代码如下 复制代码
Person jb = (Person)JSONObject.toBean(obj,Person.class);//将建json对象转换为Person对象


3.将java对象转换为json字符串

先将java对象转换为json对象,在将json对象转换为json字符串

 代码如下 复制代码

JSONObject json = JSONObject.fromObject(obj);//将java对象转换为json对象

String str = json.toString();//将json对象转换为字符串

完整代码如下:

 代码如下 复制代码

package baz.parse;

import java.util.ArrayList;
import java.util.List;

import net.sf.json.JSON;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JSONSerializer;
import baz.bean.Person;

public class ParseJson {
 
 private String jsonStr;
 
 public ParseJson() {
  
 }
 
 public ParseJson(String str){
  this.jsonStr = str;
 }
 /**
  * 解析json字符串
  */
 public void parse(){
  JSONObject jsonObject = JSONObject.fromObject(jsonStr);
  String name = jsonObject.getString("name");
  int num = jsonObject.getInt("num");
  String sex = jsonObject.getString("sex");
  int age = jsonObject.getInt("age");
  
  System.out.println(name + " " + num + " " + sex + " " + age);
 }
 //将json字符串转换为java对象
 public Person JSON2Object(){
  //接收{}对象,此处接收数组对象会有异常
  if(jsonStr.indexOf("[") != -1){
   jsonStr = jsonStr.replace("[", "");
  }
  if(jsonStr.indexOf("]") != -1){
   jsonStr = jsonStr.replace("]", "");
  }
  JSONObject obj = new JSONObject().fromObject(jsonStr);//将json字符串转换为json对象
  Person jb = (Person)JSONObject.toBean(obj,Person.class);//将建json对象转换为Person对象
  return jb;//返回一个Person对象
 }
 

}

 


package baz.bean;

public class Person {
 
 private String name;
 private int num;
 private String sex;
 private int age;
 
 public Person() {
  // TODO Auto-generated constructor stub
 }

 public Person(String name, int num, String sex, int age) {
  super();
  this.name = name;
  this.num = num;
  this.sex = sex;
  this.age = age;
 }

 

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public int getNum() {
  return num;
 }

 public void setNum(int num) {
  this.num = num;
 }

 public String getSex() {
  return sex;
 }

 public void setSex(String sex) {
  this.sex = sex;
 }

 public int getAge() {
  return age;
 }

 public void setAge(int age) {
  this.age = age;
 }
 
}

 


 将java对象转换为json字符串

package baz.cons;


import net.sf.json.JSONObject;


/**
 * 将java对象转换为json字符串
 * @author Administrator
 *
 */
public class ConsJson {
 
 public ConsJson() {
  // TODO Auto-generated constructor stub
 }
 
 public String Object2Json(Object obj){
  JSONObject json = JSONObject.fromObject(obj);//将java对象转换为json对象
  String str = json.toString();//将json对象转换为字符串
  
  return str;
 }
}
测试类:
package baz.test;

import java.util.List;

import baz.bean.Person;
import baz.cons.ConsJson;
import baz.parse.ParseJson;


public class Test {
 public static void main(String[] args) {
  
  //将字符串转换为json对象,然后根据建得到相应的值
  ParseJson pj = new ParseJson("{\"name\":\"gu\",\"num\":123456,\"sex\":\"male\",\"age\":24}");
  pj.parse();
  
  //将一个json字符串转换为java对象
  Person p = pj.JSON2Object();
  System.out.println("Name:" + p.getName());
  System.out.println("Num:" + p.getNum());
  System.out.println("Sex:" + p.getSex());
  System.out.println("age:" + p.getAge());
  
  //将一个java对象转换为Json字符串
  Person p1 = new Person("gu1",123,"male",23);
  ConsJson cj = new ConsJson();
  String str1 = cj.Object2Json(p1);
  System.out.println(str1);
  
 }

}
测试输出如下:
gu 123456 male 24
Name:gu
Num:123456
Sex:male
age:24
{"age":23,"name":"gu1","num":123,"sex":"male"}

热门栏目