Я пытаюсь проанализировать набор запросов в объект JSON, чтобы каждый ключ был первичным ключом модели, а каждое значение - объектом JSON, содержащим все остальные поля.
myjson = {
apple: { color: "r", calories: 10},
banana: { color: "w", calories: 50}
}
Здесьэто модель и представление Django, собирающее данные (на основе этого сообщения в блоге ):
class Fruit(models.Model):
fruit_id = models.CharField(primary_key=True)
color = models.CharField(max_length=50)
calories = models.IntegerField()
def get_FruitsTableDjango(request):
fruits_table = Fruit.objects.all().values()
fruits_table_list = list(fruits_table ) # important: convert the QuerySet to a list object
return JsonResponse(fruits_table_list , safe=False)
Но на стороне клиента (через AJAX) это возвращает массив объектов:
mydata = [
0: { fruit_id: "apple", color: "r", calories: 10},
1: { fruit_id: "banana", color: "w", calories: 50}
]
Я также нашел здесь , как я могу переработать этот массив, как и ожидалось:
//Restructure JSON by fruit_id name
fruits= {},
mydata.forEach(function (a) {
var temp = {};
Object.keys(a).forEach(function (k) {
if (k === 'fruit_id') {
fruits[a[k]] = temp; //gets fruit_id
return;
}
temp[k] = a[k]; //fill the temp variable with elements
});
});
mydata=fruits; //overwrite initial array with nicely-rearranged-by-fruitId object
У меня два основных вопроса:
- Есть ли более прямой способ получить желаемый JSON (вложенный первичными ключами)?
- Если нет, то где объективно лучшее место для выполнения логики синтаксического анализа объекта: на стороне клиента в Javascript (например,выше) или на стороне сервера, например, в представлении Django?