2013-05-01 35 views
2

我有,我想存儲水平作爲靜態Java類的的Android遊戲。 Java中以下JavaScript對象的等效代碼是什麼?什麼是Java相當於Javascript中的多維對象?

var Levels = { 
Level1:{ 
    shapes:[ 
    { 
     bodytype : "dynamic", 
     h : "50.0000", 
     nameid : "hofN7-1", 
     props : { 
      id : "properties" 
     }, 
     rotation : "0.0000", 
     type : "square", 
     uid : "Av2EZQh", 
     w : "50.0000", 
     x : "20.0000", 
     y : "20.0000" 
    }, 
    { 
     bodytype : "dynamic", 
     h : "50.0000", 
     nameid : "hofN7-2", 
     props : { 
      gravMassScale : "2", 
      id : "properties", 
      inertia : "2", 
      isBullet : true, 
      torque : "2", 
      velocity : { 
       x : "2", 
       y : "2" 
      } 
     } 
    } 
... 
+0

我想'Map'是在行爲上最近的,如果你不希望創建一個新的類(或多個新類)。 – nhahtdh 2013-05-01 10:29:31

+1

也許你應該首先學習java基礎知識? – Bart 2013-05-01 10:34:46

+0

類和屬性是你正在尋找的。基本的OOP。 – jlordo 2013-05-01 10:37:38

回答

1

如果你正在尋找的東西接近JS如何存儲對象,你可以嘗試的JSONObject類:

http://json.org/javadoc/org/json/JSONObject.html 

保持語法對語法映射不談,從工程的角度看,我將存儲在地圖樓層,像這樣一個水平:

HashMap<String, Level> myLevels = new HashMap<String, Level>(); 
0

正如評論者寫道,你可以使用一個Map創建Java中的等價物。但是,此地圖中的值具有不同的類型。有些會是String s。一些將是某種類型的陣列Object。有些應該是Map

那麼您可以使用的唯一收集對象是Map<String, Object>,然後每次使用它時都需要進行instanceof檢查。這將是笨拙的。

你可以使用JSON綁定庫,像傑克遜。見http://wiki.fasterxml.com/JacksonHome。這有一種模式,您可以在其中創建一個類Levels,並註釋其實例變量,以便Jackson可以將實例轉換爲JSON並返回。但你需要知道你的班級結構。傑克遜有一種可以使用無類型地圖的模式。

最後,你可以把它當作一棵樹,並使用複合模式模型Levels。您將擁有一個包含名稱的抽象類Node,以及具體子類如IntegerNode,StringNode,DoubleNode,MapNodeArrayNode

0

把你的JSON的這個調整版本,並使用jsonschema2pojo類:

{ 
    "Levels":{ 
    "shapes":[ 
    { 
     "bodytype" : "dynamic", 
     "h" : "50.0000", 
     "nameid" : "hofN7-1", 
     "props" : { 
      "id" : "properties" 
     }, 
     "rotation" : "0.0000", 
     "type" : "square", 
     "uid" : "Av2EZQh", 
     "w" : "50.0000", 
     "x" : "20.0000", 
     "y" : "20.0000" 
    }, 
    { 
     "bodytype" : "dynamic", 
     "h" : "50.0000", 
     "nameid" : "hofN7-2", 
     "props" : { 
     "gravMassScale" : "2", 
     "id" : "properties", 
     "inertia" : "2", 
     "isBullet" : "true", 
     "torque" : "2", 
     "velocity" : { 
      "x" : "2", 
      "y" : "2" 
     } 
     } 
    }] 
    } 
} 

檢查JSON進行轉換,並根據您的需要他們選擇其他選項。您可以下載並使用Java項目中的轉換類。

希望這有助於...乾杯!

+1

這是一個很好的答案,但我更關心如何將它作爲Java對象用於我的項目。 – Johnston 2013-05-01 17:00:27

+0

所得類可以被用於與許多解析器像* genson JSON/POJO轉化*,* GSON *或Android內置包('org.json。*')。它們實際上實現了任何JSON數據的對象表示 - 一旦實例化:) – Trinimon 2013-05-01 17:09:48

相關問題