我有一款Android游戏,我希望将关卡存储为静态Java类。 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 :(得分:1)
如果您正在寻找与JS存储对象的接近的东西,您可以尝试JSONObject类:
http://json.org/javadoc/org/json/JSONObject.html
保持语法到语法的映射,从工程角度来看,我会将级别存储在Levels的映射中,如下所示:
HashMap<String, Level> myLevels = new HashMap<String, Level>();
答案 1 :(得分:0)
正如评论者所写,您可以使用Map
在Java中创建等效对象。但是,此映射中的值具有不同的类型。有些人会String
。有些是Object
某种类型的数组。有些人会Map
自己。
您可以使用的唯一集合对象是Map<String, Object>
,然后每次使用时都需要进行instanceof
检查。这会很笨拙。
您可以使用JSON绑定库,例如Jackson。见http://wiki.fasterxml.com/JacksonHome。这有一种模式,您可以在其中创建一个类Levels
,并注释其实例变量,以便Jackson可以将实例转换为JSON并返回。但是你需要知道你的类结构。杰克逊有一种可以使用无类型地图的模式。
最后,您可以通过将其视为树并使用复合模式来建模Levels
。你有一个Node
抽象类,它包含一个名称,以及具体的子类,如IntegerNode
,StringNode
,DoubleNode
,MapNode
和{{1} }。
答案 2 :(得分: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项目中的转换类。
希望这有帮助......干杯!