怎样将字符串转化为jsonobject

JavaScript019

怎样将字符串转化为jsonobject,第1张

字符串格式json转化成json对象有3种方式:

1:js下用eval生成JSON对象 ---通过eval() 函数可以将JSON字符串转化为对象。

2:使用函数方式

3:使用js的json库或者jQuery提供的js库 --- 如果基于安全的考虑的话,最好是使用一个 JSON 解析器。 一个 JSON 解析器将只接受 JSON 文本。所以是更安全的。

 // 如果是你现在的提问,你的 string 是 '*****'

 <script type="text/javascript">

     window.onload = function(){

         var itemString = "'{id:\"item1\",num:1},{id:\"item2\",num:2}'"

         if(itemString.length>2){

             itemString = itemString.substring(1,itemString.length-1)

             itemString = eval('([' + itemString + '])')

             alert(itemString)

         }

     }

 </script>

 

 

 // 这是对于你第一个发的问题的,确保你的问题是正确的,那【两边有单引号】 

 // 也就是 var str = "'{ *** }'"

 <script type="text/javascript">

    window.onload = function() {

        // 假设你的 string 如你所给的,是 ‘{string}’

        var itemString = "‘{id:'item1',num:1,id:'item2',num:2,id:'item3',num:3}’"

        if (itemString.length > 4) {

            // 先把 ‘{}’两个给去掉,剩下 id:'',num:1, id:'',num:2 ***

            itemString = itemString.substring(2, itemString.length - 2)

            // 还要假设你的数据一定是规则的 id:'',num:1 每2个是一组,都是用 , 来分隔的 

            // 这样就切出来了 id:''  num:1  id'' num:2 的数组

            var arrs = itemString.split(',')

            var arrlen = arrs.length

            var result = ""

            for (var i = 0 i < arrlen i = i + 2) { 

                // 如果 result 不为空,则是已经拼接过 { id:'',num:* } 了,再拼接一个则要加上 ,

                if (result != "") {

                    result += ","

                }

                // 最终结果拼接为 { id:'',num:* } , { id:'',num:* }

                result += "{" + arrs[i] + "," + arrs[i + 1] + "}"

            }

            // 最后拼接总的字符串 [ + { id:'',num:* } , { id:'',num:* } + ]

            result = "[" + result + "]"

            alert(result)

        }

    }

</script>

var str = "['同意','不同意']"

    var arr = eval('('+str+')')

    var newArray = []

    for (var i = 0  i < arr.length  i++) {

     var obj = {}

     obj.text = arr[i]

     obj.value = arr[i]

     newArray.push(obj)

    }

   

    alert(newArray)

    或者

    var str = '["同意","不同意"]'

    var arr = JSON.parse(str)

    var newArray = []

    for (var i = 0  i < arr.length  i++) {

     var obj = {}

     obj.text = arr[i]

     obj.value = arr[i]

     newArray.push(obj)

    }

   

    alert(newArray)