2010-10-10 22 views
0

我想知道,鑑於以下JSON,我如何能夠生成一個ResultSet實例,其中攜帶的Query值爲ppb什麼是由google-gson讀取的JSON的結構

package jsontest; 

import com.google.gson.Gson; 

/** 
* 
* @author yccheok 
*/ 
public class Main { 

    public static class ResultSet { 
     public String Query; 
    } 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     // TODO code application logic here 
     final String s = "{\"ResultSet\":{\"Query\":\"ppb\"}}"; 
     System.out.println(s); 
     Gson gson = new Gson(); 
     ResultSet resultSet = gson.fromJson(s, ResultSet.class); 
     // {} 
     System.out.println(gson.toJson(resultSet)); 
     // null? 
     System.out.println(resultSet.Query); 
    } 
} 

目前,這裏是我得到:

{"ResultSet":{"Query":"ppb"}} 
{} 
null 

沒有修改字符串,我怎樣才能得到一個正確的Java對象?

回答

2

嘗試第一個構建一個新的對象,調用gson.toJson(object),並查看結果。

我沒有GSON,但傑克遜(另一個對象到JSON的映射器)打印此:

{"Query":"ppb"} 

所以,你不包括的類名。實際上,gson user guide舉例說明了這一點。看看BagOfPrimitives

(而且最後要說明 - 在Java中,接受的做法是,變量是小寫 - 即query而非Query

更新如果你真的不能改變JSON輸入,可以鏡像結構是這樣的:

public static class Holder { 
    public ResultSet ResultSet; 
} 

public static class ResultSet { 
    public String Query; 
} 

(然後用Holder h = gson.fromJson(s, Holder.class);

+0

更新我的問題 – 2010-10-10 18:51:50

+0

@Yan Cheng CHEOK那不是我的意思。無論如何,請參閱我的更新 – Bozho 2010-10-10 18:53:35

+0

我無法控制JSON字符串。它從服務器返回。 – 2010-10-10 18:58:18