Tabla de contenido
Convierta la cadena con formato json {} en un objeto kotlin
Convierta String[] en formato json a Lista de objetos kotlin
Para agregar dependencias primero
Convierta la cadena con formato json {} en un objeto kotlin
Convierta String[] en formato json a Lista de objetos kotlin
convertir objeto kotlin a cadena json{}
Convertir lista de objetos kotlin a json string[]
6. Use Map para encapsular el caso especial de la clave de objeto json
1. ¿Qué es JSON?
- JSON (Notación de objetos JavaScript) es un formato ligero de intercambio de datos
- La esencia es una cadena con un formato específico.
- Los datos JSON ya son la opción más común para la interacción cliente-servidor, y xml rara vez se usa para la interacción de datos.
Ventajas y desventajas de JSON sobre XML:
Ventajas: JSON tiene un tamaño más pequeño y ahorra tráfico cuando se transmite en la red.
Desventajas: mala semántica, parece menos intuitivo que XML.
Cómo obtener datos en formato JSON
Para los amigos que recién comienzan a aprender JSON, siempre habrá un problema: cómo obtener datos en formato JSON, si tiene el mismo problema ahora, puede probar mi otro blog http://t.csdn.cn/JNaXQ Hay introducciones detalladas.
2. Formato de datos JSON
- todo el cuadro
Matriz Json: []
Objeto json: {}
- La estructura de la matriz Json: [valor1, valor2, valor3]
- La estructura del objeto Json: {key1: value1, key2: value2, key3: value3}
- tipo de datos de clave: cadena
- El tipo de datos de valor
valor cadena nulo json matriz json objeto
- ejemplo
[1,"abcd",[{"a",1}],{"b":2,"c":[]}]
3. API relacionadas
1.JSONObjeto:
- JsonObject: objeto json {}
JSONObject( json:String): analiza la cadena json en un objeto json
Xxx.getXxx(name:String): Obtenga el valor correspondiente en el objeto json según el nombre
- JsonArray: matriz json []
JSONArray (json: String): analiza una cadena json en una matriz json
length (): obtenga la cantidad de elementos en la matriz json
Xxx.getJSONObject (índice: int): obtenga los datos del elemento correspondiente en la matriz json de acuerdo con el subíndice
2. hijo
- Gson: una clase que puede analizar datos json
Gson(): Método para construir objetos
toJson(src:Object): convierte el objeto en una cadena json en el formato correspondiente
fromJson(json:String,typeOfT:Type):T: analiza la cadena JSon para obtener el objeto
- TypeToken<T>: la clase utilizada para obtener el tipo
TypeToken protegido (): método de construcción protegido
getType():Tipo: obtener el tipo de objeto
4. Usar JSONObject
Convierta la cadena con formato json {} en un objeto kotlin
1. Encapsule la cadena json en un objeto JSONObject
2. Obtener el valor correspondiente del objeto según la clave
private fun JsonToObject(jsonData:String){
try {
//1.将json字符串封装成JSONObject对象
val jsonObject:JSONObject= JSONObject(jsonData)
//2.从对象中根据key得到对应的value
val id:Int=jsonObject.getInt("id")
val name:String=jsonObject.getString("name")
val price:Double=jsonObject.getDouble("price")
val imagePath:String=jsonObject.getString("imagePath")
Log.d("data","id is $id")
Log.d("data","name is $name")
Log.d("data","price is $price")
Log.d("data","imagePath is $imagePath")
}catch (e:Exception){
e.printStackTrace()
}
}
Convierta String[] en formato json a Lista de objetos kotlin
1. Envuelva la cadena json en el objeto JSONArray
2. Recorra todos los elementos del objeto JSONArray (JSONObject), encapsule cada elemento como shopInfo y agréguelo a la Lista
private fun JsonToList(jsonData:String){
try {
val list= ArrayList<ShopInfo>()
//1.将json字符串包装JSONArray对象
val jsonArray= JSONArray(jsonData)
//2.遍历JSONArray对象所以元素(JSONObject),并将每个元素封装为shopInfo,
//并添加到List
for(i in 0 until jsonArray.length()){
val jsonObject=jsonArray.getJSONObject(i)
//从对象中根据key得到对应value
val id:Int=jsonObject.getInt("id")
val name:String=jsonObject.getString("name")
val price:Double=jsonObject.getDouble("price")
val imagePath:String=jsonObject.getString("imagePath")
Log.d("data","id is $id")
Log.d("data","name is $name")
Log.d("data","price is $price")
Log.d("data","imagePath is $imagePath")
list.add(ShopInfo(id,name,price,imagePath))
}
}catch (e:Exception) {
e.printStackTrace()
}
}
5. Usa GSON
Para agregar dependencias primero
implementation 'com.google.code.gson:gson:2.8.5'
Convierta la cadena con formato json {} en un objeto kotlin
private fun JsonToObjectGson(jsonData:String){
val gson=Gson()
val shopInfo=gson.fromJson(jsonData,ShopInfo::class.java)
}
Convierta String[] en formato json a Lista de objetos kotlin
private fun JsonToListGson(jsonData:String){
val gson=Gson()
val typeOf=object:TypeToken<List<ShopInfo>>(){}.type
val list=gson.fromJson<List<ShopInfo>>(jsonData,typeOf)
for (a in list){
Log.d("data","id is $a.id")
Log.d("data","name is $a.name")
Log.d("data","price is $a.price")
Log.d("data","imagePath is $a.imagePath")
}
}
convertir objeto kotlin a cadena json{}
private fun ObjectToJson(){
val info:ShopInfo= ShopInfo(4,"小名",11.0,"http://www.ddd.com")
val json:String=Gson().toJson(info)
Log.d("data",json)
}
Convertir lista de objetos kotlin a json string[]
private fun ListToJson(){
val list=ArrayList<ShopInfo>()
list.add(ShopInfo(4,"小名",11.0,"http://www.ddd.com"))
list.add(ShopInfo(5,"小星",21.0,"http://www.eee.com"))
val json:String=Gson().toJson(list)
Log.d("data",json)
}
6. Use Map para encapsular el caso especial de la clave de objeto json
Cuando la clave del objeto json no se ajusta a las reglas de nomenclatura de variables, como: mi nombre (con espacios en la variable) o 2, esta variable miembro no se puede agregar a la clase ShopInfo, ¿cómo solucionarlo?
Podemos convertir el objeto json a Map .
private fun JsonToMap(jsonString:String) {
val json=Gson()
val typeOf=object :TypeToken<Map<String,Objects>>(){}.type
val map:Map<String,Objects> = json.fromJson(jsonString,typeOf)
Log.d("data",map.toString())
}