2

次のような JSON ドキュメント / JavaScript オブジェクトがあるとします。

var animal = {
  "squirrel": "Squirrels belong to a large family of small or medium-sized rodents called the Sciuridae."
}

JavaScript では、次のようになります。

console.log(animal.squirrel) //Squirrels belong to a large family of small or medium-sized rodents called the Sciuridae

rankオブジェクトを追加したいとしましょう:

var animal = {
  "squirrel": {   
    "rank": {
      "Kingdom": "Animalia",
      "Phylum": "Chordata",
      "Class": "Mammalia",
      "Order": "Rodentia",
      "Suborder": "Sciuromorpha",
      "Family": "Sciuridae"
    }
  }
}

ランクは次のようにアクセスできます。

animal.squirrel.rank

しかし、オブジェクトのトップレベルをanimal.squirrel上記の文を含む文字列にしたいのです。

これは可能ですか?

4

2 に答える 2

5

JSONでは不可能です。ただし、JavaScript では、できることがいくつかあります。toStringオブジェクトが文字列に変換されるときに使用されるメソッドを提供できます。

var animal = {
  "squirrel": {   
    "rank": {
      "Kingdom": "Animalia",
      "Phylum": "Chordata",
      "Class": "Mammalia",
      "Order": "Rodentia",
      "Suborder": "Sciuromorpha",
      "Family": "Sciuridae"
    },
    toString: function() {
      return "Squirrels belong to a large family of small or medium-sized rodents called the Sciuridae.";
    }
  }
};

オブジェクトを使用することもできStringます:

var animal = {
    squirrel: new String("Squirrels belong to a large family of small or medium-sized rodents called the Sciuridae.")
};

animal.squirrel.rank = {
    "Kingdom": "Animalia",
    "Phylum": "Chordata",
    "Class": "Mammalia",
    "Order": "Rodentia",
    "Suborder": "Sciuromorpha",
    "Family": "Sciuridae"
};

後者は文字列のように機能しますが、Stringオブジェクトを使用するため、イライラする場合があり、通常は悪い習慣です。

于 2012-08-18T21:34:35.897 に答える
1

他の人が言ったように、これはどのオブジェクト コンテキストでも可能ではないため、すべてをオブジェクト上/オブジェクト内のアクセス可能な部分として処理する必要があります。

var animal = {
  "squirrel": {
    "info": "Squirrels belong to a large family of small or medium-sized rodents called the Sciuridae.",
    "rank": {
      ...
    }
  }
}

そして、無関係だと思いますが、共通点のためにクイックアクセサーをセットアップできます。

function getAnimalInfo(animalName) {
  if (!animal[animalName]) return "No info for: " + animalName;

  return animal[animalName].info;
}

そう、

console.log(getAnimalInfo("squirrel")); //Squirrels belong to a large family of small or medium-sized rodents called the Sciuridae
于 2012-08-19T02:27:29.427 に答える