Chromeネットワーク->プレビューウィンドウに以下のように構成された次のオブジェクトがあります。
n_days_orders:
index: ["Sun, 21 Oct 2018", "Mon, ...
last_n: 7
quantity: [0, 0, 0, 0, 0, 0, 0]
私は以下を使用して、がJSONオブジェクトであるかどうかを確認し、そうである場合はそれを解析します。
後の値は、JSONオブジェクトがあるかどうかはどのように確認できますか?
function isJSON (something) {
if (typeof something !== 'string') {
something = JSON.stringify(something)
}
try {
JSON.parse(something)
return true
} catch (e) {
return false
}
}
if (isJSON(data.n_days_orders)) {
try {
daysOrders = JSON.parse(data.n_days_orders)
} catch (e) {
console.log(e.message)
//the line below is printed
>>Unexpected token o in JSON at position 1
}
}
エラーをスローせずにオブジェクトの値を取得するにはどうすればよいですか?
isJSONをパーサーとして試して、値を検出して解析するか、エラーをスローしてください。参照上に存在することに問題なくobjプロパティにアクセスする方法は、インデックス値によるものです。
let t = data.n_days_orders //will raise an exception if the field does not exist;
let tmp = data['n_days_orders'] //will allow you the cast and return an undefined value
文字列が有効なJSONであるかどうかを確認する適切な方法は、文字列を解析して例外を処理することです。jstypeof
比較はを返し'object'
ます。
モデルによって記述されたJSON形式のプロトタイプまたはチェッカーを作成する場合は、ループ内のフィールドをチェックしてその存在を確認する方法がありますが、これには各オブジェクトのO(props)表記が必要になるため注意してください。遅延のため。
function checkMyModel(model , prototypemodel){
let props = Object.keys(prototypemodel);
let notexist = props.filter((p)=>{
return (model[p] === undefined );
})
console.log(notexist);
return notexist.length > 0 ? false : true;
}
var proto = {id: null, name:null , value:null , z : null }
var m1 = {id: 1, name:'john' , z : null }
var m2 = {id: 1, name:'john1' ,value:'iam a value2'}
var m3 = {id: 1, name:'john2' ,value:'iam a value3' , z : 34 }
console.log(checkMyModel(m1,proto)); //false missing value
console.log(checkMyModel(m2,proto)); //false missing z
しかし、私はあなたがプロパティが存在するかどうかだけをチェックしたいと思うと思います
function isJSON (something) {
try {
return(typeof something !== 'object') ? JSON.parse(something) : something;
} catch (e){ console.warn(e);throw e; }
}
function getDayOrdes (value){
try {
let obj = isJSON(value);
let t= obj['n_days_orders'] ;
return (t !== null && t !== undefined) ? t : [];
} catch (e) { return e.message; }
}
var obj1 = { id : 'order1' , value : '111$'}, obj2 = { id : 'order2' , value : '222$'};
var json1 = { id: '' , n_days_orders: [obj1 , obj2]};
var json2 = JSON.stringify(json1) ,json3 = { id: 1 , values: [obj1 , obj2]};
console.log(getDayOrdes(json1)); //returns obj
console.log(getDayOrdes(json2 + 'zasaza')); //throws json parse error
console.log(getDayOrdes(json2)); //returns obj
console.log(getDayOrdes(json3)); //undefined n_days_orders does not exist
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加