Javascript 解析JSON对象以获取列数据
假设我有一个JSON对象中的数据,格式类似于Javascript 解析JSON对象以获取列数据,javascript,json,Javascript,Json,假设我有一个JSON对象中的数据,格式类似于 {"data": [["X","Y","Z"], ["52","23","10"], ["46","65","32"]] } 因此,基本上,每一行都采用[X,Y,Z]的形式 访问整个“列”或数据向量的最简单方法是什么?例如,假设“X”、“Y”和“Z”是一个标题行,我想访问所有的“X”数据 我是否需要以某种方式迭代整个对象来检索每个元素的第一个成员,它将对应于“X”列 如果可能的话,我想用JavaScrip
{"data":
[["X","Y","Z"],
["52","23","10"],
["46","65","32"]]
}
因此,基本上,每一行都采用[X,Y,Z]
的形式
访问整个“列”或数据向量的最简单方法是什么?例如,假设“X”、“Y”和“Z”是一个标题行,我想访问所有的“X”数据
我是否需要以某种方式迭代整个对象来检索每个元素的第一个成员,它将对应于“X”列
如果可能的话,我想用JavaScript来做这件事
非常感谢您的帮助 您应该尝试使用类似Gson或Jackson的Json处理器来处理Json,并将其反序列化为您可以使用的内容 一旦您这样做,您将能够执行以下操作:
JsonObject json = new JsonParser().parse("...json string...");
JsonArray data = json.get("data");
JsonArray labels = data.getAsJsonArray(0)
for (int i = 1; i < data.size(); i++) {
JsonArray points = data.getAsJsonArray(i);
// do something with: points.getInt(0) -- x column
// do something with: points.getInt(1) -- y column
// do something with: points.getInt(2) -- z column
}
JsonObject json=new JsonParser().parse(“…json字符串…”);
JsonArray data=json.get(“数据”);
JsonArray标签=data.getAsJsonArray(0)
对于(int i=1;i
“jsonpath”似乎也是一个不错的选择:
vector X: /data[1][*][1]
vector Y: /data[1][*][2]
vector Z: /data[1][*][3]
我已经为Android运行了这段代码,您可以在JavaScript中试用这种逻辑:
String json = "{\"data\":[[\"X\",\"Y\",\"Z\"],[\"52\",\"23\",\"10\"],[\"46\",\"65\",\"32\"]]}";
try {
JSONObject jsonObj = new JSONObject(json);
Log.i(TAG, "DatA : " + jsonObj.getJSONArray("data").length());
JSONArray array = jsonObj.getJSONArray("data");
for(int i=0; i<array.length(); i++) {
Log.i(TAG, "Value : " + array.getJSONArray(i).getString(0));
}
} catch (JSONException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
编辑:对于JavaScript:
变量文本=“{\'data\”:[[\'X\',\'Y\',\'Z\'],[\'52\',\'23\',\'10\'],[\'46\',\'65\',\'32\']};
var out=“”;
obj=JSON.parse(文本);
arr=对象数据;
控制台日志(arr);
对于(i=0;i”;
}
document.getElementById(“demo”).innerHTML=out;
请尝试下面简单直接的示例代码,以访问第一列
首先迭代第一行以找到正确的列,然后为下一行获取该列的值
<script type="text/javascript">
var obj = {
"data" : [
[ "X", "Y", "Z" ],
[ "52", "23", "10" ],
[ "46", "65", "32" ]
]
};
var column;
for (var i = 0, j = obj.data.length; i < j; i++) {
if (obj.data[0][i] === 'X') {
column = i;
break;
}
}
for (var i = 1, j = obj.data.length; i < j; i++) {
var val = obj.data[i][column];
console.log(val);
}
</script>
var obj={
“数据”:[
[“X”、“Y”、“Z”],
[ "52", "23", "10" ],
[ "46", "65", "32" ]
]
};
var列;
对于(变量i=0,j=obj.data.length;i
您可以添加您希望使用哪种语言执行此操作的说明吗@ツ普拉蒂克布塔尼ツ 是的,很抱歉,添加到描述中!:)非常感谢。最终输出是什么?@AndroidNoobie我已经为JavaScriptGood提示编辑了我的答案。请记住,在Stackoverflow中,裸链接不如链接+应用于问题上下文的代码片段更受欢迎。如果你想建议一个链接,用评论代替回答。太好了!非常感谢你!我也只是在学习JavaScript。:)不得不做一个小修正。对于第二个For循环,j=obj.data.length,而不是obj.data[0].length。obj.data[0].length给出了“变量数组”的长度,因此在本例中为3。obj.data.length给出数据列的长度。已提交编辑以供审阅。否则,一切都好——再次感谢!
<html>
<body>
<p id="demo"></p>
<script>
var text = '{\"data\":[[\"X\",\"Y\",\"Z\"],[\"52\",\"23\",\"10\"],[\"46\",\"65\",\"32\"]]}';
var out = "";
obj = JSON.parse(text);
arr = obj.data;
console.log(arr);
for(i = 0; i < arr.length; i++) {
out += arr[i][0] + "<br>";
}
document.getElementById("demo").innerHTML = out;
</script>
</body>
</html>
<script type="text/javascript">
var obj = {
"data" : [
[ "X", "Y", "Z" ],
[ "52", "23", "10" ],
[ "46", "65", "32" ]
]
};
var column;
for (var i = 0, j = obj.data.length; i < j; i++) {
if (obj.data[0][i] === 'X') {
column = i;
break;
}
}
for (var i = 1, j = obj.data.length; i < j; i++) {
var val = obj.data[i][column];
console.log(val);
}
</script>