求指导,JS解析JSON格式数据的方式。
发布于 1年前 作者 lonso 1738 次浏览
[
 {
  "37414": "应用",
  "weight": 1154
 },
 {
  "21253": "开发者",
  "weight": 500
 },
 {
  "221011160001436805": "第三方应用开发",
  "weight": 9
 },
 {
  "66344": "APP",
  "weight": 1845
 },
 {
  "1622": "API",
  "weight": 178
 },
 {
  "58653": "开放平台",
  "weight": 557
 }
]

这是JSON返回值,如何解析分别得到 "应用","开发者"等等这些值。

19 回复

data[0][‘37414’] data[0][‘weight’],用这种方式就可以

JSON 字符串和对象转换使用 JSON.parse 和 JSON.stringify 两个方法

用中括号读 data[0][‘37414’]

json对象为data,则通过data[0][‘37414’] data[0][‘weight’]就可以拿到对应的值了。 如果key不知道就只能遍历了

现在重点是我不知道37414 这个东西怎么来的。。。

这两个怎么用。 我现在是这样解析的 for(var tag in tags ){ var stringArg = JSON.stringify(tags[tag]).split(“,”); for(var i in stringArg){ var stringFlag = stringArg[i].split(“:”); for(var j in stringFlag){ if(i == 0 && j== 1) tagItems.push(stringFlag[j]); } } } 超丑陋,坑爹的方式。tags 表示json。

37414是随机的。。

如何遍历。。

@lonso


var data = [
 {
  "37414": "应用",
  "weight": 1154
 },
 {
  "21253": "开发者",
  "weight": 500
 },
 {
  "221011160001436805": "第三方应用开发",
  "weight": 9
 },
 {
  "66344": "APP",
  "weight": 1845
 },
 {
  "1622": "API",
  "weight": 178
 },
 {
  "58653": "开放平台",
  "weight": 557
 }
];

var result={};
for(var i = 0,length = data.length;i<length;i++){
    for(var item in data[i]){
        result.push(data[i][item]);
    }
}



result :["应用", 1154, "开发者", 500, "第三方应用开发", 9, "APP", 1845, "API", 178, "开放平台", 557]

@ringtail 这样的结果是一个数组,如果我只想要"应用", "开发者"等这些值的时候,只能根据数组的下标来取?,,,,, 这是新浪挖的大坑哦。。纠结啊。。

@lonso 不好懂… 原始的数据是什么样子的?

@lonso 原来是对象的话, 直接在通过对象来访问就好了, 对象是嵌套的, 一直用 [] 或者 . 的语法就好了…

如果最初是字符串, 先用 JSON.parse 转化到对象, 然后对象就上边那么处理

API 看里边的链接: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON#Methods

@lonso 我没明白你到底想要什么样的格式

@ringtail 想要一个最高效的方式,得到"应用", “开发者” 组成数组或者字符串都可以. 结果要这样:["应用","开发者","第三方应用开发", "APP", "API", “开放平台”]

@lonso var data = [ { "37414": "应用", "weight": 1154 }, { "21253": "开发者", "weight": 500 }, { "221011160001436805": "第三方应用开发", "weight": 9 }, { "66344": "APP", "weight": 1845 }, { "1622": "API", "weight": 178 }, { "58653": "开放平台", "weight": 557 } ];

var result=[]; for(var i = 0,length = data.length;i<length;i++){ for(var item in data[i]){ if(item===’weight’){

   }else{ 
     result.push(data[i][item]);
   } 

} }

@lonso 过滤掉就行了

var data = [
 {
  "37414": "应用",
  "weight": 1154
 },
 {
  "21253": "开发者",
  "weight": 500
 },
 {
  "221011160001436805": "第三方应用开发",
  "weight": 9
 },
 {
  "66344": "APP",
  "weight": 1845
 },
 {
  "1622": "API",
  "weight": 178
 },
 {
  "58653": "开放平台",
  "weight": 557
 }
];

var result=[];
for(var i = 0,length = data.length;i<length;i++){
    for(var item in data[i]){
       if(item==='weight'){

   }else{ 
     result.push(data[i][item]);
   } 
   }
}

var result = [];

data.map(function(item) { for (var i in item) { if (i != “weight”) { result.push(item[i]); } } });

data 为返回数据 输入结果为: ["应用", 1154, "开发者", 500, "第三方应用开发", 9, "APP", 1845, "API", 178, "开放平台", 557]

@ringtail ok…好了,谢了,,感觉是新浪挖的坑,给个统一的名字,方便多了。嘿嘿。

很简单 四个字母 eval()

回到顶部