На днях я столкнулся с этой проблемой и реализовал более общую версию Encoder для объектов Python, которая может обрабатывать вложенные объекты и наследуемые поля:
import json
import inspect
class ObjectEncoder(json.JSONEncoder):
def default(self, obj):
if hasattr(obj, "to_json"):
return self.default(obj.to_json())
elif hasattr(obj, "__dict__"):
d = dict(
(key, value)
for key, value in inspect.getmembers(obj)
if not key.startswith("__")
and not inspect.isabstract(value)
and not inspect.isbuiltin(value)
and not inspect.isfunction(value)
and not inspect.isgenerator(value)
and not inspect.isgeneratorfunction(value)
and not inspect.ismethod(value)
and not inspect.ismethoddescriptor(value)
and not inspect.isroutine(value)
)
return self.default(d)
return obj
Пример:
class C(object):
c = "NO"
def to_json(self):
return {"c": "YES"}
class B(object):
b = "B"
i = "I"
def __init__(self, y):
self.y = y
def f(self):
print "f"
class A(B):
a = "A"
def __init__(self):
self.b = [{"ab": B("y")}]
self.c = C()
print json.dumps(A(), cls=ObjectEncoder, indent=2, sort_keys=True)
Результат:
{
"a": "A",
"b": [
{
"ab": {
"b": "B",
"i": "I",
"y": "y"
}
}
],
"c": {
"c": "YES"
},
"i": "I"
}
См. Определение Значок веб-страницы для веб-клипа на странице Настройка веб-приложений в Руководстве по веб-содержимому Safari в Справочной библиотеке Safari .
Указание значка веб-страницы для веб-клипа
Вы можете захотеть, чтобы пользователи могли добавлять ваше веб-приложение или ссылку на веб-страницу на главный экран. Эти ссылки, обозначенные значком, называются веб-подборками. Выполните следующие простые шаги, чтобы указать значок для представления вашего веб-приложения или веб-страницы на iOS.
Чтобы указать значок для всего веб-сайта (каждой страницы на веб-сайте), поместите файл значка в формате PNG в корневую папку документа с именем
apple-touch-icon.png
.Чтобы указать значок для отдельной веб-страницы или заменить значок веб-сайта на значок для конкретной веб-страницы, добавьте элемент ссылки на веб-страницу, например:
В приведенном выше примере заменитеcustom_icon.png
именем своего значка.
Примечание. Safari на iOS 7 не добавляет эффекты к значкам. Более старые версии Safari не будут добавлять эффекты для файлов значков с суффиксом
-precomposed.png
. См. Подробности в разделе «Первые шаги: определение вашего приложения в iTunes Connect».
И ради полноты, ссылки на регистрацию Scott Hanselman, которая содержит некоторые дополнительные подсказки также:
Добавляют главный экран iPhone Icons и Корректируют ViewPort
От Руководства веб-контента Safari Соединения Разработчика Apple для страницы iPhone, Определяющей Значок Веб-страницы для веб-Клипа ...
пользователь может добавить, что веб-приложение или веб-страница связываются с главным экраном. Эти ссылки, представленные значком, называют веб-клипами. Выполните эти простые шаги для определения значка для представления веб-приложения или веб-страницы на iPhone.
Для определения значка для всего веб-сайта (каждая страница на веб-сайте) поместите файл значка в формат PNG в корневой папке документов, названной apple-touch-icon.png.
, Чтобы определить значок для единственной веб-страницы или заменить значок веб-сайта определенным для веб-страницы значком, добавляет элемент ссылки к веб-странице как в:
<link rel="apple-touch-icon" href="/custom_icon.png"/>
В вышеупомянутом примере, замените custom_icon.png своим именем файла значка.
Видят, "Создают Значок для Вашего веб-приложения или Веб-страницы" в iPhone Human Interface Guidelines в iPhone Human Interface Guidelines для метрик значка веб-страницы.
Примечание: веб-функция клипа доступна в iPhone 1.1.3 и позже.