Публикация нескольких объектов JSON объектов в колбе - PullRequest
0 голосов
/ 26 апреля 2018

Я довольно новичок в мире веб-разработки, и я пытаюсь выяснить, возможно ли сделать две записи из одного объекта request.json, используя curl X POST.Например, если я наберу

curl -i -H "Content-Type: application/json" -X POST -d '{"income":500, "age" : 4, "gender" : "male"}' http://localhost:5000/house

в командной строке.Я получаю

[
  {
    "income": 500.0, 
    "members": [
      {
        "age": 22, 
        "gender": "male"
      }
    ], 
    "unique_id": 0
  }, 
  {
    "income": 500.0, 
    "members": [
      {
        "age": 4, 
        "gender": "male"
      }
    ], 
    "unique_id": 1
  }
]

в качестве вывода.Я пытаюсь получить другой член (объект JSON возраста и пола), я попытался использовать curl X POST, как это

curl -i -H "Content-Type: application/json" -X POST -d '{"income":500, "age" : 4, "gender" : "female", "age" : 22, "gender" : "male"}' http://localhost:5000/house

, и результат должен выглядеть как

[
  {
    "income": 500.0, 
    "members": [
      {
        "age": 22, 
        "gender": "male"
      }
    ], 
    "unique_id": 0
  }, 
  {
    "income": 500.0, 
    "members": [
      {
        "age": 4, 
        "gender": "female"
        "age" : 22
        "gender" : "male"
      }
    ], 
    "unique_id": 1
  }
]

Но вместо этого я получаю

[
  {
    "income": 500.0, 
    "members": [
      {
        "age": 22, 
        "gender": "male"
      }
    ], 
    "unique_id": 0
  }, 
  {
    "income": 500.0, 
    "members": [
      {
        "age": 22, 
        "gender": "male"
      }
    ], 
    "unique_id": 1
  }
]

Как видите, я публикую только последний объект возраста и пола JSON, который я печатаю.Есть ли способ исправить это, так что он публикует объекты JSON возраста и пола.Мой код ниже.Спасибо.

households = []   

@app.route('/house', methods=['POST'])   
def post_household():

    """this here gives us our unique id by counting the number of household objects
    we have in our households list"""
    unique_id = len(households)

    house = Household({
        'unique_id' : unique_id,   
        'income': request.json['income'],
        'members':[
            {
            'age': request.json['age'],
            'gender': request.json['gender']
            },
        ]})
    """turns the Household object back into a dictionary so it can be jsonified"""
    return_to_dictionary = house.to_primitive()
    """append our newly created dictionary to our households list"""
    households.append(return_to_dictionary)
    return jsonify(households)

1 Ответ

0 голосов
/ 26 апреля 2018

В этом json

"members": [
      {
        "age": 4, 
        "gender": "female"
        "age" : 22
        "gender" : "male"
      }
    ]

У вас есть два набора одинаковых ключей («возраст» и «пол»), поэтому сериализатор json будет принимать последнее значение, присутствующее для каждого дублирующегося ключа (см. Этоссылка: Дубликаты ключей в объектах JSON ).Возможно, вместо этого вы можете использовать этот формат, который также группирует возрастные и гендерные атрибуты (например, женщине 4 года)

"members": [
          {
            "age": 4, 
            "gender": "female"
           },
           {
            "age" : 22
            "gender" : "male"
          }
        ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...