Как конвертировать список Python в JSON

.NET Common Language Infrastructure имеет две различные концепции:

  • Пространства имен: префиксы для имен типов, такие как System.Drawing, которые используются для различения нескольких типов, которые в противном случае имели бы одно и то же имя .
  • Ассемблирования: Библиотеки кода, которые могут быть развернуты, установлены и версированы отдельно от других сборок. Типы в сборке могут быть в любом количестве пространств имен.

Пространства имен образуют иерархию, основанную на разделителях полной остановки (точки), поэтому вы должны думать, что типы в пространстве имен System.Runtime.InteropServices подчинены тем, которые находятся в System.Runtime Пространство имен. Однако, насколько мне известно, CLI не заботится о имени или иерархии ваших пространств имен, за исключением тех случаев, когда они делают ваши имена типов уникальными.

Кроме того, сборка может содержать типы из нескольких пространств имен, даже в разных иерархиях, , а одно пространство имен может содержать типы, определенные в нескольких сборках. Если вы посмотрите на документацию MSDN для типа в библиотеках .NET он расскажет вам, какая именно эта сборка находится. Однако , как отметил Паоло Фалабелла, MSDN не сообщит вам, какая сборка имеет пространство имен, поскольку единое пространство имен может содержать типы из нескольких сборок.

В вашем сценарии: mscorlib - это сборка, которая определяет некоторые типы в пространстве имен System и многие другие, такие как System.Runtime.InteropServices, как вы отметили. Однако типы, которые вы используете в пространстве имен System.Drawing, находятся в сборке System.Drawing.

Поскольку сборки являются единицей развертывания и повторного использования кода, проекты Visual Studio ссылаются на сборки, а не на пространства имен и поэтому вы должны добавить ссылку на сборку System.Drawing в проекте Visual Studio для своей программы.

Оператор VB.NET Imports (и его эквивалент C #, using директива ) позволяет ссылаться на типы в пространстве имен , не вызывая каждый раз имя пространства имен. То есть, с помощью Imports System.Drawing, вы можете записать Graphics в свой код вместо System.Drawing.Graphics . Но это все оператор Imports. В частности:

  • Imports System не создает автоматически ссылки на проекты для каждой сборки в мире, которая определяет типы в пространстве имен System.
  • Imports mscorlib не означает, что вы ссылаетесь на каждый тип сборки «mscorlib» по его короткому имени. Это означает, что вы можете ссылаться на типы в пространстве имен mcorlib по их коротким именам, что не только совсем другое, но и вряд ли будет то, что вы хотите.

Итог: если вы хотите получить доступ к GDI +, то вы используете типы в пространстве имен System.Drawing, но это имя не имеет ничего общего с именем сборки GDI +. Microsoft выбрала имя «System.Drawing» для сборки, которая содержит типы GDI +, но она могла бы выбрать «gdiplus-cli», «gdi-for-dotnet» или даже «Frobinator». Независимо от того, какое имя имеет эта сборка, вы должны добавить ссылку на эту сборку. И вы не делаете этого в своем исходном коде - вы добавляете ссылки на сборки в своей конфигурации проекта Visual Studio.

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

-4
задан U9-Forward 18 January 2019 в 06:24
поделиться

1 ответ

Используйте приведенное ниже словарное понимание:

import json
cords = [ [20.339751164468076, 85.8083048318772], [20.339866852950124, 85.80909340132757]]
print(json.dumps([{'lat':x,'lon':y} for x,y in cords],indent=4))

Вывод:

[
    {
        "lat": 20.339751164468076,
        "lon": 85.8083048318772
    },
    {
        "lat": 20.339866852950124,
        "lon": 85.80909340132757
    }
]
0
ответ дан U9-Forward 18 January 2019 в 06:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: