Как сгенерировать JSON на основании списка значений (list)?

У меня есть список значений. Вот его пример:

[[[0.0002700000000000001, 90.00026999999932],
  [0.0005400000000000066, 90.00026999999932],
  [0.0002700000000000001, 90.00053999999865],
  [0.0005400000000000066, 90.00053999999865]],
 [[0.0002700000000000001, 90.00053999999865],
  [0.0005400000000000066, 90.00053999999865],
  [0.0002700000000000001, 90.00080999999795],
  [0.0005400000000000066, 90.00080999999795]],
 [[0.0002700000000000001, 90.00080999999795],
  [0.0005400000000000066, 90.00080999999795],
  [0.0002700000000000001, 90.00107999999727],
  [0.0005400000000000066, 90.00107999999727]],
 [[0.0002700000000000001, 90.00107999999727],
  [0.0005400000000000066, 90.00107999999727],
  [0.0002700000000000001, 90.00134999999659],
  [0.0005400000000000066, 90.00134999999659]]]

Т. е. в общем списке, у меня есть списки из 4-элементов, в каждом из которых по 2 значения. С этого списка я хочу автоматически сгенерировать вот такой JSON:

{
  "type": "Feature",
  "properties": {
    "area": 1
  },
  "geometry": {
    "type": "Polygon",
    "coordinates": [
      [
        [0.0002700000000000001, 90.00026999999932],
        [0.0005400000000000066, 90.00026999999932],
        [0.0002700000000000001, 90.00053999999865],
        [0.0005400000000000066, 90.00053999999865]
      ]
    ]
  }
}


{
  "type": "Feature",
  "properties": {
    "area": 2
  },
  "geometry": {
    "type": "Polygon",
    "coordinates": [
      [
        [0.0002700000000000001, 90.00053999999865],
        [0.0005400000000000066, 90.00053999999865],
        [0.0002700000000000001, 90.00080999999795],
        [0.0005400000000000066, 90.00080999999795]
      ]
    ]
  }
}

Как видите, каждый элемент списка - в новом блоке "coordinates" Кроме того, поле "area" генерится автоматически на основании номера элемента в списке. Если элемент имеет номер 1 в списке, то "area" == 1, и т. д...

Как это сделать?

Спасибо


Ответы (2 шт):

Автор решения: Denis640Kb
import json
list = [[[0.0002700000000000001, 90.00026999999932],
  [0.0005400000000000066, 90.00026999999932],
  [0.0002700000000000001, 90.00053999999865],
  [0.0005400000000000066, 90.00053999999865]],
 [[0.0002700000000000001, 90.00053999999865],
  [0.0005400000000000066, 90.00053999999865],
  [0.0002700000000000001, 90.00080999999795],
  [0.0005400000000000066, 90.00080999999795]],
 [[0.0002700000000000001, 90.00080999999795],
  [0.0005400000000000066, 90.00080999999795],
  [0.0002700000000000001, 90.00107999999727],
  [0.0005400000000000066, 90.00107999999727]],
 [[0.0002700000000000001, 90.00107999999727],
  [0.0005400000000000066, 90.00107999999727],
  [0.0002700000000000001, 90.00134999999659],
  [0.0005400000000000066, 90.00134999999659]]]

z = 0
for key in list:
    zc = z+1
    string = '{"type": "Feature", "properties": {"area": '+str(zc)+'}, "geometry": {"type": "Polygon", "coordinates": [[['+str(list[z][0])+'],['+str(list[z][1])+'],['+str(list[z][2])+'],['+str(list[z][3])+']]]}}'
    z += 1
    json_str = json.dumps(string)
    print(json_str)
→ Ссылка
Автор решения: Михаил Муругов

Пусть исходный список значений находится в переменной coordinates. Тогда решение для Вас:

result = [
    {
        "type": "Feature",
        "properties": {
            "area": index
        },
        "geometry": {
            "type": "Polygon",
            "coordinates": [coords]
        }
    }
    for index, coords in enumerate(coordinates, start=1)
]
→ Ссылка