一个到SeismicPortal的websocket连接正在向我发送一个JSON对象中打包的地震数据,这个JSON对象是一个多行字符串,例如:{
"action": "create",
"data": {
"geometry": {
"coordinates": [
-95.12,
16.52,
-52.0
],
"type": "Point"
},
"id": "20180303_0000046",
"properties": {
"auth": "UNM",
"depth": 52.0,
"evtype": "ke",
"flynn_region": "OAXACA, MEXICO",
"lastupdate": "2018-03-03T10:26:00.0Z",
"lat": 16.52,
"lon": -95.12,
"mag": 4.0,
"magtype": "m",
"source_catalog": "EMSC-RTS",
"source_id": "652127",
"time": "2018-03-03T07:09:05.0Z",
"unid": "20180303_0000046"
},
"type": "Feature"
}
}
我想把字符串中的数据转换成python对象。
正如您在JSON数据中看到的,有很多嵌套。当我在定义类及其嵌入性以构建一个结构的on对象时,它将保存来自JSON的所有数据,我在想也许有一个神奇的Python函数jsonstringtooobject可以定制一个类和所有子类来保存JSON中的所有数据并为其创建一个实例。
让我们在变量rawData中使用原始JSON字符串:rawData = """{"action":"create","data":{"geometry": {"type": "Point","coordinates": [... """
现在我要做的是:>>> import json
>>> quake = json.loads(rawData)
>>> quake['data']['properties']['flynn_region']
"OXACA_MEXICO"
但是语法中充满了括号和撇号。
我希望我能像这样访问数据:>>> import json
>>> quake = jsonStringToObject(rawData)
>>> quake.data.properties.flynn_region
"OXACA_MEXICO"