JSONのフォーマットと使用方法、およびキー名が非正常変数となっている読み取り方法

6293 ワード

JSON(JavaScript Object Notation)は、軽量級のデータ交換フォーマットであり、言語とは完全に独立したテキスト形式を採用し、理想的なデータ交換フォーマットである.同時に、JSONはJavaScript原生フォーマットであり、これはJava ScriptでJSONデータを処理するには特別なAPIやツールバッグが必要ではないことを意味しています.プログラミングの中では汎用的なデータフォーマットとして非常に便利です.
JSONには、オブジェクトと配列の2つの構造があります.
object形式で、「{}」で起こしたキーの値は正しいです.
var person= {"name":"jack"}
array形式で、「[]」を使って引き起こされるobject:
var person = [{name:"trump", age:"71"},{name:"hillary", age:"70"}];
二つの値の取り方は対象としない時に直接「打点使用」となります.例えば、person.name.配列の場合は、インデックスに従って使用します.たとえば、person[1].age.
JSONオブジェクトとJSON文字列:データ伝送過程では、JSONはテキスト形式、すなわち文字列で伝達されていますが、JavaScriptはJSONオブジェクトを操作していますので、実際にはJSONオブジェクトとJSON文字列との相互変換に遭遇することが多いです.ex:
    // JSON   :
    var jsonStr = '{ "name": "wade", "sex": "male" }';

    // JSON  :
    var jsonObj = { "name": "Kristein", "sex": "female" };
簡単に言えば、json文字列とは、json形式のファイルを引用符で文字列の書式を表すものです.
// JSON      JSON  
var obj = eval('(' + str + ')');
var obj = str.parseJSON();
var obj = JSON.parse(str); 
注意:obj自体が対象であれば、eval()を使って変換した後もJsonオブジェクトですが、パーサーJSONを使用すると異常が発生しますが、安全ではないので、eval()を使用することは推奨されません.例を挙げます
var jsonStr = '{name:"jack", action:"alert('unsafe')"};'
以上のjson文字列はeval()で変換した後、actionを取得すると直接に「unsafe」が表示されます.
 //JSON        
 var jsonStr = obj.toJSONString(); 
 var jsonStr = JSON.stringfy(obj);
上記の方法では、eval()はjavascriptが持参したもので、他のものは全部Json.jsのカバンから来ています.新しいバージョンのjsonはAPIを修正して、JSON.strigfy()とJSON.parse()の二つの変換方法をjsの内の建設対象に加入しています.すなわち直接使用できます.
最後にもう一つのポイントを追加します.json形式のファイルを読み込む場合、キーの名前が数字または非正常変数の場合はどうやって操作しますか?まず小例を貼って、その中のjsonの各データを取得します.data.vue
export default {
      data:function(){
        return {
            "2016Q1": [
              {channel: '  ', vv: '17,980', dayrate: '+292%', weekrate: '+5%'},
              {channel: '  ', vv: '48,133', dayrate: '+48%', weekrate: '+21%'},
              {channel: '  ', vv: '189,342', dayrate: '+39%', weekrate: '+0%'},
              {channel: '  ', vv: '106,430', dayrate: '+35%', weekrate: '+12%'}
            ],
            "2016Q2": [
              {channel: '  ', vv: '43,910', dayrate: '+414%', weekrate: '+77%'},
              {channel: '  ', vv: '34,173', dayrate: '+28%', weekrate: '+11%'},
              {channel: '  ', vv: '89,562', dayrate: '+59%', weekrate: '+29%'},
              {channel: '  ', vv: '96,189', dayrate: '+37%', weekrate: '+0%'}
            ]
            }
      }
    }
ap.vue
import listData from './components/data'

export default {
  name: 'app',
  data(){
    return{
         lists: listData.data()["2016Q1"]               //array
    }
  }
jsonファイルのキーの名前が数字の時はどうやって値を取りますか?
var testJson = {'9527':'soldiers'}; 
alert(testJson.9527); 
このように書くのは無効です.何もポップアップしません.どう解決しますか?数字のキーパッド名または非正常変数文字(たとえばスペースがある)には、Obj[キー]を使用する必要があります.
上記に戻ると、通常は「this.lists=listData.data().2016 Q 1」を使ってデータの内容を読み取ることができますが、ここでは無効です.使うべきです
this.lists = listData.data()["2016Q1"];
ps:まとめは急いでいますので、ミスやミスがあったら、ご指摘ください.