JSONのフォーマットと使用方法、およびキー名が非正常変数となっている読み取り方法
6293 ワード
JSON(JavaScript Object Notation)は、軽量級のデータ交換フォーマットであり、言語とは完全に独立したテキスト形式を採用し、理想的なデータ交換フォーマットである.同時に、JSONはJavaScript原生フォーマットであり、これはJava ScriptでJSONデータを処理するには特別なAPIやツールバッグが必要ではないことを意味しています.プログラミングの中では汎用的なデータフォーマットとして非常に便利です.
JSONには、オブジェクトと配列の2つの構造があります.
object形式で、「{}」で起こしたキーの値は正しいです.
JSONオブジェクトとJSON文字列:データ伝送過程では、JSONはテキスト形式、すなわち文字列で伝達されていますが、JavaScriptはJSONオブジェクトを操作していますので、実際にはJSONオブジェクトとJSON文字列との相互変換に遭遇することが多いです.ex:
最後にもう一つのポイントを追加します.json形式のファイルを読み込む場合、キーの名前が数字または非正常変数の場合はどうやって操作しますか?まず小例を貼って、その中のjsonの各データを取得します.data.vue
上記に戻ると、通常は「this.lists=listData.data().2016 Q 1」を使ってデータの内容を読み取ることができますが、ここでは無効です.使うべきです
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.vueimport 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:まとめは急いでいますので、ミスやミスがあったら、ご指摘ください.