Как я могу проанализировать JSON в Google App Engine?

Правила (который не изменился в C++ 11):

Из Стандарта C++ 2003 года:

17.4.3.1.2 Глобальных набора [lib.global.names]

Certain имен имен и функциональных подписей всегда резервируются к реализации:

  • Каждое имя, которое содержит двойное подчеркивание (__) или начинается с подчеркивания, сопровождаемого прописной буквой (2.11), резервируется к реализации для любого использования.
  • Каждое имя, которое начинается с подчеркивания, резервируется к реализации для использования в качестве имени в глобальном пространстве имен. 165 глоток>

165) глоток> Такие имена также резервируются в пространстве имен ::std (17.4.3.1).

, поскольку C++ основан на стандарте C (1.1/2, C++ 03), и C99 является нормативной ссылкой (1.2/1, C++ 03), они также применяются с 1999 C Стандарт:

7.1.3 Зарезервированных идентификатора

Каждый заголовок объявляет или определяет все идентификаторы, перечисленные в его связанном подпункте, и дополнительно объявляет или определяет идентификаторы, перечисленные в его связанном будущем подпункте направлений библиотеки и идентификаторах, которые всегда резервируются или для любого использования или для использования в качестве идентификаторов объема файла.

  • Все идентификаторы, которые начинаются с подчеркивания и или прописная буква или другое подчеркивание, всегда резервируются для любого использования.
  • Все идентификаторы, которые начинаются с подчеркивания, всегда резервируются для использования в качестве идентификаторов с объемом файла и в пробелах обычного и в имени тега.
  • Каждое макро-имя в любом из следующих подпунктов (включая будущие направления библиотеки) резервируется для использования, как определено, если какой-либо из его связанных заголовков включен; если явно не указано иначе (см. 7.1.4).
  • Все идентификаторы с внешней связью в любом из следующих подпунктов (включая будущие направления библиотеки) всегда резервируются для использования в качестве идентификаторов с внешней связью. 154 глоток>
  • Каждый идентификатор с объемом файла, перечисленным в любом из следующих подпунктов (включая будущие направления библиотеки), резервируется для использования в качестве макро-имени и в качестве идентификатора с объемом файла в том же пространстве имен, если какой-либо из его связанных заголовков включен.

Никакие другие идентификаторы не резервируются. Если программа объявляет или определяет идентификатор в контексте, в котором она резервируется (кроме, как позволено 7.1.4) или определяет зарезервированный идентификатор как макро-имя, поведение не определено.

, Если программа удаляет (с #undef) какое-либо макроопределение идентификатора в первой упомянутой выше группе, поведение не определено.

154) глоток> список зарезервированных идентификаторов с внешней связью включает errno, math_errhandling, setjmp, и va_end.

Другие ограничения могли бы применяться. Например, стандарт POSIX резервирует много идентификаторов, которые, вероятно, обнаружатся в нормальном коде:

  • Имена, начинающиеся с капитала E, следовали за цифрой или прописной буквой:
    • может использоваться для дополнительных имен кода ошибки.
  • Имена, которые начинаются или is или to сопровождаемый строчной буквой
    • , могут использоваться для дополнительного тестирования символа и функций преобразования.
  • Имена, которые начинаются LC_ сопровождаемый прописной буквой
    • , могут использоваться для дополнительных макросов, определяющих атрибуты локали.
  • Названия всех существующих функций математики, снабженных суффиксом [1 112] или l, резервируются
    • для соответствующих функций, которые воздействуют на и длинные двойные споры плавающие, соответственно.
  • Имена, которые начинаются SIG сопровождаемый прописной буквой, резервируются
    • для дополнительных имен сигнала.
  • Имена, которые начинаются SIG_ сопровождаемый прописной буквой, резервируются
    • для дополнительных действий сигнала.
  • Имена, начинающиеся str, mem, или wcs сопровождаемый строчной буквой, резервируются
    • для дополнительных строковых функций и функций массива.
  • Имена, начинающиеся PRI или SCN сопровождаемый любой строчной буквой или X, резервируются
    • для дополнительных макросов спецификатора формата
  • Имена, которые заканчиваются [1 122], резервируются
    • для дополнительных имен типов.

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

Лично я просто не запускаю идентификаторы с подчеркиваний. Новое дополнение к моему правилу: не используйте двойные подчеркивания нигде, который легок, поскольку я редко использую подчеркивание.

После проведения исследований в области этой статьи я больше не заканчиваю свои идентификаторы [1 123], поскольку это резервируется стандартом POSIX.

правило о любом идентификаторе, заканчивающемся [1 124], удивило меня много. Я думаю, что это - стандарт POSIX (не уверенный все же) поиск разъяснения и официальной главы и стиха. Это от GNU libtool руководство , перечисляя зарезервированные имена.

CesarB обеспечил следующую ссылку на POSIX 2004 зарезервированные символы и примечания, 'которыми много других зарезервированных префиксов и суффиксов... могут быть найдены там'. POSIX 2008 зарезервированные символы определяются здесь. Ограничения несколько более детальны, чем те выше.

81
задан Nogwater 23 July 2009 в 13:09
поделиться

4 ответа

Рассмотрите возможность использования библиотеки json lib Django, которая входит в состав GAE.

from django.utils import simplejson as json

# load the object from a string
obj = json.loads( string )

По ссылке выше приведены примеры сериализатора Django, а здесь - ссылка на документацию simplejson .

Если вы хотите сохранить экземпляры или объекты классов Python (в отличие от композиций списков, строк, чисел и словарей), вы, вероятно, захотите посмотреть на pickle .

Я надеюсь, что это поможет.

Между прочим, чтобы запустить Django 1.0 (вместо Django 0.96) в GAE, вы можете использовать следующий вызов в main.py согласно этой статье :

from google.appengine.dist import use_library
use_library('django', '1.0')

Изменить: встроенная поддержка JSON в Google App Engine 1.6.0 с Python 2.7

Начиная с Google App Engine 1.6.0, вы можете использовать среду выполнения Python 2.7 , добавив среду выполнения:python27 в app.yaml , а затем вы можете импортировать собственную библиотеку JSON с помощью import json .

114
ответ дан 24 November 2019 в 09:38
поделиться

Если вы используете Python2.6 или выше, я успешно использовал встроенную функцию json .load. В противном случае simplejson работает на 2.4 без зависимостей.

1
ответ дан 24 November 2019 в 09:38
поделиться

Включить библиотеку simplejson в ваше приложение?

6
ответ дан 24 November 2019 в 09:38
поделиться

Посмотрите на раздел Python json.org . Поддержка стандартной библиотеки для JSON началась в python 2.6, который, как мне кажется, новее, чем то, что предоставляет движок приложения. Может быть, один из других перечисленных вариантов?

0
ответ дан 24 November 2019 в 09:38
поделиться
Другие вопросы по тегам:

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