2016-02-24 6 views
1
{ 
    "Cats": [ 
     { 
      "Name": "Max", 
      "Color": "Brown" 
     }, 
     { 
      "Name": "Cherry", 
      "Color": "Black" 
     } 
    ], 
    "Owners": [ 
     { 
      "Name": "Tom", 
      "Cat": "Max" 
     }, 
     { 
      "Name": "Cindy", 
      "Cat": "Cherry" 
     } 
    ] 
} 

Вместо того, чтобы строковое значение Cat Тома, а затем делать вторую операцию, чтобы получить цвет кошки, можно десериализации этого JSON, так что я могу просто делать:Deserialize JSON строка объекта, который также в формате JSON

var tomsCatsColor = Rootobject.Owners[0].Cat.Color; 
+1

Существует не из коробки способ сделать это, вы просто должны знать, что вы ссылаетесь на что-то в JSON, когда вы deserialize и свяжите его тогда – konkked

+0

Я не думаю, что вы можете сделать это легко с прямым JSON , но при принятии значений может иметь смысл иметь карты построения JavaScript из их имен. Например, 'catNameMap = {" Cherry ": {" Name ":" Cherry "," Color ":" Black "}};'. Тогда на самом деле было бы довольно легко получить отдельных кошек/владельцев на основе соответствующей информации о имени; 'CatNameMap [owner.Cat] .Color' – Katana314

ответ

0

Вы можете дать пользователю идентификатор кошки, это будет выглядеть примерно так:

{ 
 
    "Cats": [ 
 
     { 
 
      "Name": "Max", 
 
      "Color": "Brown" 
 
     }, 
 
     { 
 
      "Name": "Cherry", 
 
      "Color": "Black" 
 
     } 
 
    ], 
 
    "Owners": [ 
 
     { 
 
      "Name": "Tom", 
 
      "Cat": 0 
 
     }, 
 
     { 
 
      "Name": "Cindy", 
 
      "Cat": 1 
 
     } 
 
    ] 
 
} 
 

 
var tomsCatsColor = Rootobject.Cats[Rootobject.Owners[0].Cat].Color;

Смежные вопросы