169

你如何让 JS 认为一个字符串是 JSON ?

我有一个函数,只有当 JSON 对象传递给它时才有效。如果我向它传递一个与 JSON 格式相同的字符串,它就不起作用。所以我想让那个函数认为传递给它的字符串是一个 JSON。该字符串确实是 JSON 格式。

我还尝试了以下方法。我通过 Ajax 输入了字符串,“handle as”参数为“JSON”,然后当我将结果传递给它工作的函数时。

所以我推断问题不在于字符串。如何将此字符串转换为 JSON?如果我通过 ajax 请求获得相同的字符串,然后将其传递给函数,则直接传递它不起作用。

字符串如下:

  {
     "data": [
   {
  "id": "id1",
      "fields": [
        {
          "id": "name1",
          "label": "joker",
          "unit": "year"
        },
         {"id": "name2", "label": "Quantity"},
    ],
      "rows": [    data here....

and closing braces..
4

9 回答 9

389
var obj = JSON.parse(string);

string你的 json 字符串在哪里。

于 2012-06-11T08:51:29.987 回答
27

你可以使用JSON.parse()它。

请参阅 MDN 上的文档

例子:

var myObj = JSON.parse('{"p": 5}');
console.log(myObj);
于 2012-06-11T08:50:22.947 回答
6
var obj = jQuery.parseJSON('{"name":"John"}');
alert( obj.name === "John" );

关联:-

http://api.jquery.com/jQuery.parseJSON/

于 2012-06-11T08:52:27.413 回答
6

我对像你这样的类似字符串也有同样的问题

{id:1,field1:"someField"},{id:2,field1:"someOtherField"}

这里的问题是字符串的结构。在这种情况下,json 解析器没有认识到它需要创建 2 个对象。所以我所做的有点傻,我只是重新构造了我的字符串并添加[]了解析器识别的这个

var myString = {id:1,field1:"someField"},{id:2,field1:"someOtherField"}
myString = '[' + myString +']'
var json = $.parseJSON(myString)

希望能帮助到你,

如果有人有更优雅的方法,请分享。

于 2014-01-17T00:51:31.060 回答
5

只需使用eval功能。

var myJson = eval(theJsibStr);
于 2017-10-15T06:44:43.830 回答
4

使用 Object Mapper 将字符串转换为 HashMap ...

new ObjectMapper().readValue(string, Map.class);

内部 Map 将表现为 JSON 对象

于 2019-09-03T06:14:01.257 回答
2
var Data=[{"id": "name2", "label": "Quantity"}]

将字符串变量传递给 Json parse :

Objdata= Json.parse(Data);
于 2017-04-03T05:49:09.737 回答
1

让我们考虑一下你有类似的字符串

示例:“姓名:露西,年龄:21,性别:女性”

function getJsonData(query){
    let arrayOfKeyValues = query.split(',');
    let modifiedArray =  new Array();
    console.log(arrayOfKeyValues);
    for(let i=0;i< arrayOfKeyValues.length;i++){
        let arrayValues = arrayOfKeyValues[i].split(':');
        let arrayString ='"'+arrayValues[0]+'"'+':'+'"'+arrayValues[1]+'"';
        modifiedArray.push(arrayString);
    }
    let jsonDataString = '{'+modifiedArray.toString()+'}';
    let jsonData = JSON.parse(jsonDataString);
    console.log(jsonData);
    console.log(typeof jsonData);
    return jsonData;
}

let query = "name:lucy,age:21,gender:female";
let response = getJsonData(query);
console.log(response);

`

于 2018-05-29T12:20:48.170 回答
0

JSON.parse()功能会做。

或者

使用 Jquery,

var obj = jQuery.parseJSON( '{ "name": "Vinod" }' );
alert( obj.name === "Vinod" );
于 2017-02-03T08:06:25.657 回答