什么是Java等价于Javascript中的多维对象
What is the Java equivalent to a multi dimensional object in Javascript?
我有一个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"
}
}
}
...
如果您正在寻找类似JS存储对象的方法,可以尝试JSONObject类:
http://json.org/javadoc/org/json/JSONObject.html
撇开语法到语法的映射不谈,从工程的角度来看,我会将级别存储在级别映射中,如下所示:
HashMap<String, Level> myLevels = new HashMap<String, Level>();
正如评论者所写,您可以使用Map
在Java中创建等效对象。但是,此映射中的值具有不同的类型。一些将是String
s。一些将是某种类型的Object
的阵列。有些可能是Map
本身。
当时唯一可以使用的集合对象是Map<String, Object>
,然后每次使用它都需要进行instanceof
检查。这会很笨拙。
您可以使用JSON绑定库,如Jackson。看见http://wiki.fasterxml.com/JacksonHome.这有一种模式,您可以创建一个类Levels
,并注释其实例变量,以便Jackson可以将实例转换为JSON并返回。但你需要知道你的阶级结构。Jackson有一个可以使用非打字地图的模式。
最后,您可以通过将Levels
视为一棵树并使用Composite模式来对其进行建模。您将有一个包含名称的Node
抽象类,以及具体的子类,如IntegerNode
、StringNode
、DoubleNode
、MapNode
和ArrayNode
。
使用这个调整后的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项目中下载并使用转换后的类。
希望这能帮助。。。干杯
相关文章:
- 面向对象JavaScript中的私有函数
- 对象 Javascript 中的标签无效 - 想要添加事件列表器
- 将字符串转换为对象 javascript/jquery
- 正在检查对象javascript中是否存在嵌套属性
- 时间-日期对象JavaScript getUTCMilliseconds
- 仅在对象(javascript)中解析值
- 使用对象(JavaScript或jQuery)填充选择下拉列表
- 引用另一个对象javascript中的对象
- 如何删除列表中的对象?Javascript nodejs和下划线
- 无法从日期对象javascript获取日期和月份
- 如何在if语句中使用对象-Javascript
- 对象javascript错误
- 对象Javascript的少数实例
- 位置对象Javascript
- 将字符串传递到对象javascript中
- 获取对象Javascript或jQuery的最后一个值
- 鼠标接近对象Javascript
- 这个mixins代码是书中的错误吗;面向对象JavaScript的原理”;
- 使用闭包编译器编写更好的面向对象JavaScript完整示例代码
- 访问对象javascript数组中的对象属性值