2016-04-25 13 views
2

現在、3つの価格プランが何であるかを確認するために、ユーザーが状態とカテゴリを設定できるツールを作成しています。これらの2つの選択(状態/カテゴリ)が選択フィールドを経由して取得されますと、これらの番号を含むデータはJSONファイルである:ユーザーの選択に基づいてJSONキーを取得

[{ 
    "Alabama/Category1/Price1":"$123,123 ", 
    "Alabama/Category1/Price2":"$123,123 ", 
    "Alabama/Category1/Price3":"$123,123 ", 
    "Alabama/Category2/Price1":"$345,345 ", 
    "Alabama/Category2/Price2":"$345,345 ", 
    "Alabama/Category2/Price3":"$345,345 ", 
    "Alabama/Category3/Price1":"$456,789 ", 
    "Alabama/Category3/Price2":"$456,789 ", 
    "Alabama/Category3/Price3":"$456,789 ", 
    "Alabama/Category4/Price1":"$321,321 ", 
    "Alabama/Category4/Price2":"$321,321 ", 
    "Alabama/Category4/Price3":"$321,321 ", 
    "Alaska/Category1/Price1":"$123,123 ", 
    "Alaska/Category1/Price2":"$123,123 ", 
    "Alaska/Category1/Price3":"$123,123 ", 
    "Alaska/Category2/Price1":"$345,345 ", 
    "Alaska/Category2/Price2":"$345,345 ", 
    "Alaska/Category2/Price3":"$345,345 ", 
    "Alaska/Category3/Price1":"$456,789 ", 
    "Alaska/Category3/Price2":"$456,789 ", 
    "Alaska/Category3/Price3":"$456,789 ", 
    "Alaska/Category4/Price1":"$321,321 ", 
    "Alaska/Category4/Price2":"$321,321 ", 
    "Alaska/Category4/Price3":"$321,321 ", 
}] 

基本的にボタンのクリックで、私はJSONファイルをループしたいとなるだろうユーザの選択に基づいて状態/カテゴリが選択されます。そのキーパスにいくつかの "/"があるので、私は各価格ポイントをターゲットにしてそれらをページに表示できるように、変数でユーザーの選択を隠そうとしました。それはそうのような変数でそれをスタッシュたしようとする私の方法:

var test = stateSelected + '/' + categorySelected + '/Price1'; 

しかし、これは動作しませんし、これを達成するためにどのようになどの追加の洞察力があったか不思議でしたか?他の資料を読んでいる人は、$ .parseJSONを使うことを推奨しているようですが、それもうまくいきませんでした。私は人々が本当の問題を理解できるようにするために、人々が十分な情報を与えていない見てきました。このサイトで

$.getJSON("json_data.json", function(obj) { 
      $.each($.parseJSON(data), function(key, value) { 

       //code here 
      }); 
     }); 

この上の長寿のため申し訳ありませんが、あまりにも多くの時間を、と私は思っている。そのために私が使用しました鉱山を正しく説明しました。これについての助けに感謝します。ありがとう!

EDIT:ここでの方法以外の方法でJSONデータを表示する方法があると思われる場合は、教えてください。データはスプレッドシートで更新され、Excel - > JSONトランスレータツールを使用しました。これがデータを吐き出す方法でした。

+0

'$ .parseJSON(data)'に 'data'とは何ですか?なぜあなたのコードは 'obj'を使わないのですか? – Barmar

+0

JSONファイルにはオブジェクトの配列が含まれています。なぜそれは配列の中にあるのですか?同じ 'State/Category/Price'が配列内の複数の項目にある場合はどうなりますか? – Barmar

+0

'obj [0] [test]'はあなたが望むものを返しませんか? – Barmar

答えて

-1

あなたはそうのようなデータを保存していない理由をJSONが、その後表される方法変更することができる場合:状態の組み合わせのために、すべての価格オプションを

var options = { 
    "Alabama/Category1" : { 
     "Price1":"$123,123 ", 
     "Price2":"$123,123 ", 
     "Price3":"$123,123 " 
    }, 
    "Alabama/Category2" : { 
     "/Price1":"$345,345 ", 
     "Price2":"$345,345 ", 
     "Price3":"$345,345 " 
    } 
    ... 
} 

はその後、ユーザーの入力をスラッシュ取得し、取得しカテゴリ?

test = stateSelected + '/' + categorySelected; 
var priceOptions = options[test]; 
1

私は次のようにJSONをフォーマットしたい:

var options = { 
    Alabama: { 
    Category1: { 
     Price1: "$123, 123", 
     Price2: "$123, 123", 
    } 
    } 
} 

、その後:

var priceOptions = options[stateSelected][categorySelected]; 
+1

これがJSONにアクセスする最も簡単な方法であると私は同意します。ここでの唯一の問題は、ツール(https://shancarter.github.io/mr-data-converter/)が私が得ているExcelデータをエクスポートする方法が上に投稿した方法であるということです。あなたが言及した方法でスプレッドシートデータをエクスポートするツールを知っていれば、私はあなたに共有してもらいたい!最後に、データがまとめられているので、誰でもデータを入力している人にスプレッドシートに尋ねることができます。再度、感謝します! –

+0

別の質問を作成して、この形式のJSONにExcelファイルを変換する方法を尋ね、Excelファイルのサンプルを投稿して、mr-data-converterに言及することができます。 –

+0

上記のJSON形式は、JSONバリデータで無効になります。オリジナルのJSON形式を使用する方法はありませんか?たとえそれが長い回避策であっても? –

0

あなたはJSONを変更することができない場合、あなたは反復する必要がありますオブジェクト内の各キーを介して:

function getPricePoints(state, category, onComplete) 
{ 
    $.getJSON("json_data.json", function(obj) 
    { 
     var result = {}; 
     for(key in obj) 
     { 
      if(obj.hasOwnProperty(key) && key.indexOf(state + "/" + category + "/") == 0) 
      { 
       result[key] = obj[key]; 
      } 
     } 

     onComplete(result); 
    }); 
} 
関連する問題