2015-01-06 3 views
1

Я использую django rest framework для возврата ответа в json-формате для jquery. У меня есть объект словаря, который содержит другой объект словаря:Вложенные словарные объекты json serialization

items = { 
     ['name':'Chairs','options':{'type':'office','price':100}], 
     ['name':'Tables','options':{'type':'office','price':45}], 
} 

response = Response(json.dumps(output_items) , status=status.HTTP_200_OK) 

На стороне JavaScript Я использую этот код:

var array = JSON.parse(json); 

, не парсинг JSON, что создает ошибку.

Я хочу создать этот формат JSON:

 

    { 
       "1": { 
        "name": "Chairs", 
        "description": "All chairs", 
        "options": { 
         "1":{"type": "Office", "price": 130 }, 
         "2":{"type": "Home", "price": 75 }, 
         "3":{"type": "Shop", "price": 100 } 
        } 
       }, 
       "2": { 
        "name": "Tables", 
        "description": "table description", 
        "options": { 
         "1":{"type": "Office", "price": 240 }, 
         "2":{"type": "Home", "price": 200 }, 
         "3":{"type": "Shop", "price": 180 } 
        } 
       } 
      } 

Я хранимый все мои данные, используя словарь питона и список объекты, как я могу создать этот формат JSON строку вывода из данных словарей?

+0

Что говорит об ошибке? BTW, '['name': 'Chairs', 'options': {'type': 'office', 'price': 100}]' ... вы уверены, что это правильный JSON или даже правильный объект python определение? –

ответ

0

Это не правильный JSON или объект Python. Списки Python не могут принимать именованные аргументы. Только словарь может принимать ключевые пары значений. Если вы хотите перейти к списку, это должны быть словари, добавленные в список, а не как пары ключевых значений. Детали должны быть что-то вроде этого:

Список словарей

items = [ 
    {"name":"Chairs","options":{"type":"office","price":100}}, 
    {"name":"Tables","options":{"type":"office","price":45}}, 
] 

(или) словарь словарей

items = { 
     "first":{"name":"Chairs","options":{"type":"office","price":100}}, 
     "second":{"name":"Tables","options":{"type":"office","price":45}} 
} 
0

У вас есть ошибка в объекте "items". Попробуйте один

items = [ 
     {'name':'Chairs','options':{'type':'office','price':100}}, 
     {'name':'Tables','options':{'type':'office','price':45}}, 
] 

У вас есть ошибка в создании Dict ['name':'Chairs','options':{'type':'office','price':100}] Это не пара ключей: значение

0

вы не делаете это правильно, как уже отмечалось другими, вы можете проверить его в консоли вашего браузера просто введите

x={'type':'office','price':100} 
//Object {type: "office", price: 100} 
y={'type':'office','price':45} 
//Object {type: "office", price: 45} 
opt1={'type':x} 
//Object {type: Object} 
opt2={'type':y} 
//Object {type: Object} 
val1={'name':'Chairs', 'options':opt1} 
//Object {name: "Chairs", options: Object} 
val2={name:'tables','options':opt2} 
//Object {name: "tables", options: Object} 
items={'1':val1,'2':val2} 

вы w у вас есть необходимый формат для ваших данных, и вы получите представление о том, как сформулировать данные. надеюсь, что это помогает

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