josnSTR='[
   {"name":"小明",
   "age":"25",
   "spend":[
      {"date":"2013/12/17","money":"30元","use":"买香烟"},
      {"date":"2013/12/18","money":"100元","use":"喝酒"},
      {"date":"2013/12/18","money":"200元","use":"吃饭"}
      ]
   },
   {"name":"小花",
   "age":"20",
   "spend":[
      {"date":"2013/12/17","money":"80元","use":"买化妆品"},
      {"date":"2013/12/18","money":"10元","use":"吃饭"},
      {"date":"2013/12/18","money":"100元","use":"玩乐"}
      ]
   }
 ]'如果你那个“花费信息”没用的话,可以这么写。

解决方案 »

  1.   

    不要去直接拼成一个json的字符串,万一在中文字符那边有特殊字符,那不是直接game over了。
    直接写成一个对象,按照你的逻辑给这个对象加属性,然后属性里怎么加全凭你,省的你这么麻烦了。
    最终会有一个花费信息的对象,如果你需要这个对象的字符串,需要传到后台,就请使用
    JSON.stringify(花费信息对象, null, 2);
    后台拿到这个字符串,可以用
    JSON.parse(string);
    转回对象。
      

  2.   

    var a=eval('('+josnSTR+')');
    转换成js对象后自己解析试试
      

  3.   

    转不了。
    有个中文“花费信息”
    等javascript 支持中文做变量名时可以转。
      

  4.   

    <head>
        
    <script language="javascript">var s={"huafei":[
       {"name":"小明",
       "age":"25",
       "spend":[
          {"date":"2013/12/17","money":"30元","use":"买香烟"},
          {"date":"2013/12/18","money":"100元","use":"喝酒"},
          {"date":"2013/12/18","money":"200元","use":"吃饭"}
          ]
       },
       {"name":"小花",
       "age":"20",
       "spend":[
          {"date":"2013/12/17","money":"80元","use":"买化妆品"},
          {"date":"2013/12/18","money":"10元","use":"吃饭"},
          {"date":"2013/12/18","money":"100元","use":"玩乐"}
          ]
       }
     ]};var sl=eval(s);
    var str="";
    for (var i in s["huafei"])
    {
    var user=s["huafei"][i];
    str+=user["name"]+"**"+user["age"]+"</br>";
    document.write(str);
    str="";for (var key  in user["spend"] ){
    var spen=user["spend"][key];str+=spen["date"]+"&"+spen["money"]+"&"+spen["use"]+"</br>";
    document.write(str);
    str="";
    }
    }
    </script>
      </head>
      
      <body>
       
        
      </body>
    </html>
      

  5.   

    再来个jquery 的:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>使用jQuery选择器实现隔行变色</title>
        <script language="javascript" type="text/javascript" 
                src="js/jquery-1.4.1.js"></script>
      <script language="javascript">var s={"huafei":[
       {"name":"小明",
       "age":"25",
       "spend":[
          {"date":"2013/12/17","money":"30元","use":"买香烟"},
          {"date":"2013/12/18","money":"100元","use":"喝酒"},
          {"date":"2013/12/18","money":"200元","use":"吃饭"}
          ]
       },
       {"name":"小花",
       "age":"20",
       "spend":[
          {"date":"2013/12/17","money":"80元","use":"买化妆品"},
          {"date":"2013/12/18","money":"10元","use":"吃饭"},
          {"date":"2013/12/18","money":"100元","use":"玩乐"}
          ]
       }
     ]};var sl=eval(s);
    var str="";$(s["huafei"]).each(function(k,v){str+=v.name+"**"+v.age+"</br>";
    document.write(str);
    str="";
    $(v.spend).each(function(key,val){
    str+=val.date+"&"+val.money+"&"+val.use+"</br>";
    document.write(str);
    str="";
    });
    });
    </script>
    </head>
    <body>
    </body>
    </html>
      

  6.   

    不是这格式;变量名不能用中文的
    string josnSTR='
    {"spendDetail":[
       {"name":"小明",
       "age":"25",
       "spend":[
          {"date":"2013/12/17","money":"30元","use":"买香烟"},
          {"date":"2013/12/18","money":"100元","use":"喝酒"},
          {"date":"2013/12/18","money":"200元","use":"吃饭"}
          ]
       },
       {"name":"小花",
       "age":"20",
       "spend":[
          {"date":"2013/12/17","money":"80元","use":"买化妆品"},
          {"date":"2013/12/18","money":"10元","use":"吃饭"},
          {"date":"2013/12/18","money":"100元","use":"玩乐"}
          ]
       }
     ]
    }'
      

  7.   

        var josnSTR = '\
    {"花费信息":[\
       {"name":"小明",\
       "age":"25",\
       "spend":[\
          {"date":"2013/12/17","money":"30元","use":"买香烟"},\
          {"date":"2013/12/18","money":"100元","use":"喝酒"},\
          {"date":"2013/12/18","money":"200元","use":"吃饭"}\
          ]\
       },\
       {"name":"小花",\
       "age":"20",\
       "spend":[\
          {"date":"2013/12/17","money":"80元","use":"买化妆品"},\
          {"date":"2013/12/18","money":"10元","use":"吃饭"},\
          {"date":"2013/12/18","money":"100元","use":"玩乐"}\
          ]\
       }\
     ]\
    }';
        var o = eval('(' + josnSTR + ')');
        var arr = o.花费信息, item, spend;
        var s = ['<table cellpadding="0" cellspacing="0">'];
        for (var i = 0; i < arr.length; i++) {
            item = arr[i];
            s.push('<tr><td width="80">' + item.name + '</td><td width="50">' + item.age + '岁</td><td colspan="3">&nbsp;</td></tr>');
            spend = item.spend;
            for (var j = 0; j < spend.length; j++) {
                s.push('<tr><td>&nbsp;</td><td>&nbsp;</td><td width="120">' + spend[j].date + '</td><td width="80">' + spend[j].money + '</td><td>' + spend[j].use + '</td></tr>');
            }
        }
        s.push('</table>');    document.write(s.join(''));
      

  8.   

    问题1:JSON字符串怎么读
    答:JSON字符串如果当前节点有子节点,则用中括号括起来,里面的每个对象都用大括号括起来,这样递归向下进行。问题2:JSON字符串在前端解析
    一般都是在后台通过序列化以后然后传到前端,那么直接用下面的语句解析
    var s1= JSON.parse(s2);其实你这个数据的结构很简单,一个花费信息的类,他有姓名、年龄和花费三个成员,其中花费又是一个链表的集合,可以再定义一个花费类
      

  9.   


    6楼说的有误。
    javascript岁软不支持中文变量名,但是支持中文属性名。
    后台前台都可以转,已经验证过。
      

  10.   


    同意。
    后台用JSON.stringify(object,null,2);转成字符串传到前面去。
    前端用JSON.parse(str);再转成对象使用。
    其中属性名是中文字符也能转,属性值能有特殊字符,也没问题,因为在转的时候stringify会对特殊字符进行转义。
      

  11.   

    JQ有个方法、、 each
    var strjson = ....
    $.each(strjson,function(a,a_item){
    alert(a+":"+a_item)
    })然后你就明白许多。。