python 포맷 Json 데이터

4583 단어 Python
두 가지 방식으로 Json 데이터를 처리하는데 하나는 자체 json 모듈을 통해 json을 통해 처리한다.loads와 json.dumps 방법으로 처리합니다.2 자체 쓰기 모듈 처리 json 모듈입니다.본문에서 말하는 것은 두 번째다.
왜 모듈을 직접 써서 호출해야 합니까? 문제가 발생했기 때문에 자체 json 모듈로 처리된 json 데이터 정렬이 수정되었습니다. json 포맷은 무질서하고 정렬은 호출에 중요하지 않지만 때때로 포맷된 json은 수요를 읽을 때 매우 싫어합니다. 아주 싫어요!!때때로 포맷 후 말미의 데이터가 시작하여 읽기 장애를 일으키기 때문에 본고는 스스로 모듈을 써서 json 데이터를 처리하여 기본 순서에 따라 데이터를 보여줄 수 있도록 한다.
구체적인 코드는 다음과 같습니다.
#!/usr/bin/python
# -*- coding: utf-8 -*-
# autor chenlong

import UserString

def formatJson(jsonStr):

    if (None == jsonStr and '' == jsonStr):
        return ''
    __bu =  UserString.MutableString('')
    __last = '\0'
    __current = '\0'
    __indent = 0
    isInQuotationMarks = False

    for i in jsonStr:
        __last = __current
        __current = i
        if(__current == '"'):
            if(__last != '\\'):
                isInQuotationMarks = not isInQuotationMarks
            __bu.append(__current)
        elif(__current == '{'):
            __bu.append(__current)
            if(not isInQuotationMarks):
                __bu.append('
'
) __indent += 1 __addIndentBlank(__bu,__indent) elif(__current == '['): __bu.append(__current) if(not isInQuotationMarks): __bu.append('
'
) __indent += 1 __addIndentBlank(__bu,__indent) elif(__current == '}'): if(not isInQuotationMarks): __bu.append('
'
) __indent -= 1 __addIndentBlank(__bu,__indent) __bu.append(__current) elif(__current == ']'): if(not isInQuotationMarks): __bu.append('
'
) __indent -= 1 __addIndentBlank(__bu,__indent) __bu.append(__current) elif(__current == ','): __bu.append(__current) if(__last != '\\' and (not isInQuotationMarks)): __bu.append('
'
) __addIndentBlank(__bu,__indent) else: __bu.append(__current) return __bu def __addIndentBlank(bu,indent): for i in range(indent): bu.append('\t')

end

좋은 웹페이지 즐겨찾기