文字列がJSONだとJSにどう思わせるのですか。
JSONオブジェクトが渡された場合にのみ機能する関数があります。 JSONと同じ形式の文字列を渡すと、うまくいきません。それで私はその関数にそれに渡された文字列がJSONであると思わせるようにしたいです。文字列は実際にはJSON形式です。
私も以下を試しました。 "handle as"パラメータを "JSON"としてAjaxを介して文字列を入力し、その結果を関数に渡したときに機能します。
だから私は問題が文字列ではないと推測した。この文字列をJSONに変換する方法ajaxリクエストで同じ文字列を取得してからそれを関数に渡すとうまくいきますが、直接渡すとうまくいきません。
文字列は次のとおりです。
{
"data": [
{
"id": "id1",
"fields": [
{
"id": "name1",
"label": "joker",
"unit": "year"
},
{"id": "name2", "label": "Quantity"},
],
"rows": [ data here....
and closing braces..
var obj = JSON.parse(string);
string
はあなたのjson文字列です。
{id:1,field1:"someField"},{id:2,field1:"someOtherField"}
The problem her is the structure of the string the json parser wasn't recognizing that it needs to create 2 objects in this case. so what i did is kind of silly, i just re structured my string and added the []
with this the parser recognized
var myString = {id:1,field1:"someField"},{id:2,field1:"someOtherField"}
myString = '[' + myString +']'
var json = $.parseJSON(myString)
Hope it helps,
If anyone has a more elegant approach please share.
var obj = jQuery.parseJSON('{"name":"John"}');
alert( obj.name === "John" );
リンク:-
var Data=[{"id": "name2", "label": "Quantity"}]
文字列変数をJson parseに渡します:
Objdata= Json.parse(Data);
単にeval
関数を使用します。
var myJson = eval(theJsibStr);
JSON.parse()
関数が行います。
または
Jqueryを使用して、
var obj = jQuery.parseJSON( '{ "name": "Vinod" }' );
alert( obj.name === "Vinod" );
example : "name:lucy,age:21,gender:female"
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);
`