2013-10-29 66 views
0
public class Test { 

    public static void main(String[] args) throws ClientProtocolException, IOException { 
    HttpClient client = new DefaultHttpClient(); 

    JSONObject json = new JSONObject(); 
    json.put('set_boot' : True); 
    json.put('synchronous': True), 
    json.put('filters',filterList); 

    List filterList = new ArrayList(); 
    filterList.put(6005076802818994A0000000000009DD); 

    json.put('volumes':volumeList); 

    List volumeList = new ArrayList(); 
    volumeList.add('*all'); 

    json.add('allow_unsupported': True); 
    StringEntity se = new StringEntity(json.toString()); 
    System.out.println(se); 
    } 
} 

我試圖添加值轉換成JSON的查詢,如:無效字符常量JSON

{ 
    'set_boot': True, 
    'synchronous': True, 
    'filters': { 
     'host_refs': [u '6005076802818994A0000000000009DD'] 
    }, 
    'volumes': ['*all'], 
    'allow_unsupported': True 
} 

但是Eclipse是給我的錯誤無效字符常量 上線

json.put('set_boot' : True); 

我已經試過寫了一些其他的詞也像

json.put('set' : True); 

但它仍然給我同樣的錯誤。

+0

'true',not'True'。 ;) –

+0

爲什麼'真'而不是'真'?我看到你在創建它們之前就添加了很多對象。這看起來不正確。 – wxyz

+1

這是什麼語言?因爲它不是有效的Java ... –

回答

3

如果這意味着是Java的,你想:

json.put("set_boot", true); 
json.put("synchronous", true); 

(還有類似的問題以後)

注:

  • 字符串位於雙引號,而不是Java中的單引號
  • 您正在調用帶有兩個參數的方法 - 使用逗號分隔參數
  • Java中的布爾真值是true,而不是True。你可以使用"True"設置字符串值,如果你想
  • 你試圖使用filterList它宣佈
  • 之前你試圖調用putList,當方法不存在..你的意思是add
  • 你的文字6005076802818994A0000000000009DD無效。你是否想要使用字符串文字?

這些都是Java語言的問題,與JSON本身無關。

+1

'put'並不是'java.util.List'上的一個方法(假設這是他正在使用的方法)並且'string'變量似乎來自任何地方。他只是不熟悉的語法/庫,他的用戶名似乎也建議。 – Brian

+0

@布萊恩:是的,還有其他問題... –

+0

@布萊恩:感謝有趣的批評意見。 。 Jon Skeet:感謝很多先生 –

1

除了Java中的snytax錯誤,您的JSON示例也是無效的。請使用jsonlint或其他服務進行檢查。它應該如下所示:

{ 
    "set_boot": true, 
    "synchronous": true, 
    "filters": { 
     "host_refs": [ 
      "6005076802818994A0000000000009DD" 
     ] 
    }, 
    "volumes": [ 
     "*all" 
    ], 
    "allow_unsupported": true 
} 
+0

其實這是爲了Python,我不太瞭解Python。所以我忘了改變'來'。 –