0

Not very familiar with JSON data and how to create it using JavaScript.this is what i am trying i have created two JS variables

var json={};
var json1={};

i have some certain loops to iterate data and loops like

for(firstLoop){
   key=outerKey;
   for(innerLook){
   innerKey=innerkey;
     for(lastloop){
       jsonValues= create values in a java variable
     }
      json[innerKey]=jsonValues;
    }

    json1[outerKey]=JSON.stringify(json);
  }

Doing this i am getting following output

Required: "{"Center":"radio_Required_Center_0,radio_Required_Center_1,","Left":"radio_Required_Left_0,"}"

which is not a valid JSON format.My idea id to create a outer-key say Required and than an inner one's in my case Center and Left

so that i can iterate each value with respect to key Center (i can break the string based on ')

i am not sure how to create correct structure and i don't want to do it on server side which can be done easily. any solution or hint will really be helpful.

Edit

var data= JSON.stringify(json1);

giving following output

{"Required":"{\"Center\":\"radio_Required_Center_0,radio_Required_Center_1,\",\"Left\":\"radio_Required_Left_0,\"}"} 

which is valid JSON data, now i need to execute some code based on the data in the JSON and here are my requirements

  1. Fetch the outer-key (Required or there can be other also).
  2. Fetch all values under the key Center and Left
  3. Create array from the value retrieved from step 2 (split based on ",").
  4. Loop through the values obtained from step 3 and execute the logic.

My real challenge is at step number 2 and 3 where i need to fetch the keys and its associated values and those key and not predefined so i can not access them based on there name.

I am thinking of a way to get key and its values without hard coding key names and execute my logic. is it possible in by this approach or not?

4

4 に答える 4

0

jsonlint.comを試してJSONを検証してください

これは有効です:

{
    "Center": "radio_Required_Center_0,radio_Required_Center_1,",
    "Left": "radio_Required_Left_0,"
}

これも有効です:

{
    "Required": {
        "Center": "radio_Required_Center_0,radio_Required_Center_1,",
        "Left": "radio_Required_Left_0,"
    }
}

これはそうではありません:

Required: {
    "Center": "radio_Required_Center_0,radio_Required_Center_1,",
    "Left": "radio_Required_Left_0,"
}

使用することJSON.stringify()は、javascriptオブジェクトをJSON文字列形式に変換する正しい方法です。ただし、それを変数に入れたい場合は、最初にそれを行う必要があります。最後のステップの後半で、JSON文字列に変換します。

var output = { "Required": yourpreviousjsonvar },
    jsonString = JSON.strinify(output);

編集:

最初にデータを処理する必要があります。私が正しく理解していれば、JSON文字列も必要ないでしょう。(=>ただし、すでに文字列を取得している場合は、最初に解析する必要があります。を使用して実行してくださいJSON.parse(yourjsonstring)

  1. 外側のキーを取得します(必須または他のキーもあります)。
  2. キーの中央と左の下にあるすべての値を取得します
  3. 手順2で取得した値から配列を作成します(「、」に基づいて分割)。
  4. 手順3で取得した値をループして、ロジックを実行します。

これを変数として持つ:

var a = {
    "Required": {
        "Center": "radio_Required_Center_0,radio_Required_Center_1,",
        "Left": "radio_Required_Left_0,"
    }
}
// step 1
console.log(a.Required);
// step 2
console.log(a.Required.Center);
console.log(a.Required.Left);
// step 3
var center = a.Required.Center.split(',');
var left = a.Required.Left.split(',');
// step 4
for(var i = 0; i<center.length; i++){
    console.log("doing somthing with", center[i]);
}

これがフィドルです=>Chrome/ safari / Operaのdeveloppertoolsを使用し、コンソールをチェックして出力をチェックします。または、firebug(firefoxの場合)またはIE9以降(F12)を使用します。

于 2012-09-18T09:57:59.480 に答える
0

最新バージョンのJavascriptを使用している場合は、JSON関数が組み込まれています。

var jsonString = JSON.stringify(jsobject);

...JSオブジェクトをJSON文字列に変換します。

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/JSON/stringifyを参照してください)

var jsOject = JSON.parse(jsomString);

...他の方向に変換し直します。

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/JSON/parseを参照してください)

これが組み込まれていないことを心配する必要があるのは、古いブラウザ(たとえば、古いバージョンのIE)を使用している場合だけです。ただし、この場合、上記の構文を実装するロード可能なこのようなポリフィルライブラリがあります。

于 2012-09-18T09:58:08.333 に答える
0

ネイティブ Javascript toSource を使用します。

var obj= new Object();
var obj1= new Object();

for(firstLoop){
   key=outerKey;
   for(innerLook){
   innerKey=innerkey;
     for(lastloop){
       jsonValues= create values in a java variable
     }
      obj.innerKey=jsonValues;
    }

    obj1.outerKey=obj;
  }

  json = obj.toSource();
  json1 = obj1.toSource();
于 2012-09-18T10:06:35.523 に答える
0

1 つの大きな JSON オブジェクトを構成しようとしているだけの場合は、1 つの JSON オブジェクトを別の JSON オブジェクトに追加する前に文字列化する必要はありませんJSON.stringify(json)json1[outerKey]=json

for(firstLoop){
   key=outerKey;
   for(innerLook){
   innerKey=innerkey;
     for(lastloop){
       jsonValues= create values in a java variable
     }
      json[innerKey]=jsonValues;
    }

    json1[outerKey]=json;
  }
于 2012-09-18T10:08:45.010 に答える