鍍金池/ 問答/數(shù)據(jù)庫(kù)  HTML/ vue如何處理json未傳字段?

vue如何處理json未傳字段?

問題描述

json中包含大量字段,后臺(tái)無(wú)法判斷某個(gè)字段是否會(huì)包含在json內(nèi),前端一個(gè)一個(gè)去聲明也不現(xiàn)實(shí),引用不存在字段頁(yè)面會(huì)報(bào)錯(cuò),像這種情況如何去解決?

問題出現(xiàn)的環(huán)境背景及自己嘗試過(guò)哪些方法

相關(guān)代碼

// 請(qǐng)把代碼文本粘貼到下方(請(qǐng)勿用圖片代替代碼)

你期待的結(jié)果是什么?實(shí)際看到的錯(cuò)誤信息又是什么?

回答
編輯回答
六扇門

所有的字段在取值的時(shí)候都做容錯(cuò)處理啊

var a = obj.b || ''
2018年9月7日 20:12
編輯回答
陪我終

推薦使用ts或者flow。

如果不方便的話,項(xiàng)目小可以使用自己檢測(cè)的方式。

比如 a.b || ''.

如果你的項(xiàng)目比較復(fù)雜可以使用jsonschema

  var Validator = require('jsonschema').Validator;
  var v = new Validator();
 
  // Address, to be embedded on Person
  var addressSchema = {
    "id": "/SimpleAddress",
    "type": "object",
    "properties": {
      "lines": {
        "type": "array",
        "items": {"type": "string"}
      },
      "zip": {"type": "string"},
      "city": {"type": "string"},
      "country": {"type": "string"}
    },
    "required": ["country"]
  };

如果覺得兩種比較麻煩, 可以使用一些插件幫你做這些操作。

比如你的代碼這樣寫:

obj.a.b.c

幫你轉(zhuǎn)義成這樣:

obj&& obj.a && obj.a.b && obj.a.b.c
2018年2月6日 00:19