JSON 배열을 Python 목록으로 변환


79
import json

array = '{"fruits": ["apple", "banana", "orange"]}'
data  = json.loads(array)

그것은 내 JSON 배열이지만 fruits 문자열의 모든 값을 Python 목록으로 변환하고 싶습니다. 이를 수행하는 올바른 방법은 무엇입니까?


3
무슨 말이야? data['fruits']목록 될 것입니다
JDI

4
Array를 포함하는 JSON 객체 가 있습니다. JSON 배열은 Python과 유사합니다 . JSON 객체 는 Python과 유사합니다 . 기술적 으로는 값이 문자열 인 단일 키-값 쌍 을 포함합니다. listdictdictlist
Joel Cornett 2012-06-11

답변:


125
import json

array = '{"fruits": ["apple", "banana", "orange"]}'
data  = json.loads(array)
print data['fruits']
# the print displays:
# [u'apple', u'banana', u'orange']

당신은 당신이 필요한 모든 것을 가지고있었습니다. data사전 data['fruits']이 될 것이고 목록이 될 것입니다


1
아, 맞다. 나는 그것이 배열이 아닌 객체에서 단일 문자열 만 잡을 것이라고 생각했습니다. 감사!
user1447941

@ user1447941 : 문제 없습니다. 디코더는 모든 json 객체를 파이썬 내장 대응 객체로 변환합니다.
jdi 2012-06-11

'print (data ['fruits '])'를 의미 했습니까? 귀하의 코드는 나를 위해 데이터 주위에서 () 와만 작동하기 때문입니다. :)
Maarten

1
@MaartenOlijve이 코드는 2014 년 파이썬 2.7에서 작성되었습니다. 나는 당신이 파이썬 3으로 테스트하고 있다고 생각합니다. 여기서 print는 이제 함수 호출입니다.
jdi

1
@shashikantkuswaha 이것은 4 년 전에 네이티브 문자열 형식이 ascii 인 python2에서 작성되었습니다. 유니 코드는 다른 유형이었고 유니 코드 리터럴은 u'foo '로 작성되었습니다. python3 만 사용한 적이 있다면 모든 문자열이 네이티브 유니 코드이므로 해당 스타일을 볼 수 없습니다.
jdi


0

data목록 의 문자열 표현 을 반환 하지만 실제로는 여전히 문자열입니다. 그냥 유형 확인 data과를 type(data). 즉, 목록의이 문자열 표현에 대해 인덱싱을 사용하려고 data['fruits'][0]하면 "["이 반환됩니다.data['fruits']

당신이 할 수있는 json.loads(data['fruits'])당신이 정기적으로 목록 색인과 상호 작용할 수 있도록 다시 파이썬리스트로 변환 할 수 있습니다. 여기에 제안 된 Python 목록으로 다시 변환 할 수있는 다른 두 가지 방법이 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.