json.py 文件源码

python
阅读 28 收藏 0 点赞 0 评论 0

项目:isf 作者: w3h 项目源码 文件源码
def list_to_JsonArray(the_list, name=None, ctx=None):
    '''
    Create a JsonArray from a list.
    The context parameter is used for recursive calls,
    no need to pass it from outside.

    :param the_list: list to base the JsonArray on
    :param ctx: context for the parser (default: None)
    :rtype: :class:`~katnip.legos.json.JsonArray`
    :return: JSON object that represents the list
    '''
    if type(the_list) != list:
        raise ValueError('expecting list as first argument')
    if ctx is None:
        ctx = _JsonStringContext()
    elements = []
    for v in the_list:
        if v is None:
            elements.append(JsonNull(ctx.uname('null'), fuzzable=False))
        elif isinstance(v, types.BooleanType):
            elements.append(JsonBoolean(ctx.uname('bool'), value=v, fuzzable=True))
        elif isinstance(v, types.StringTypes):
            elements.append(JsonString(ctx.uname('string'), v, fuzzable=True))
        elif isinstance(v, types.ListType):
            elements.append(list_to_JsonArray(v, None, ctx))
        elif isinstance(v, types.DictionaryType):
            elements.append(dict_to_JsonObject(v, None, ctx))
        elif isinstance(v, types.IntType):
            elements.append(SInt32(v, encoder=ENC_INT_DEC, name=ctx.uname('int')))
        else:
            raise ValueError('type not supported: %s' % type(v))
    if name is None:
        name = 'array'
    return JsonArray(name=ctx.uname(name, False), values=elements)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号