HarmonyOS 鸿蒙Next Json字符串转list
HarmonyOS 鸿蒙Next Json字符串转list
请问类似于这样的JSON字符串如何直接转成list
“Languange”: [{
“index”: 1,
“desc”: “中文”,
“name”: “你好”
}, {
“index”: 2,
“desc”: “英文”,
“name”: “hello”
}]
}
如果嫌弃麻烦,可以不构建实体类直接使用
let jsonStr: string = `
{"Languange": [{
"index": 1,
"desc": "中文",
"name": "你好"
}, {
"index": 2,
"desc": "英文",
"name": "hello"
}]
}
`
@Entry
@Component
struct Page34 {
build() {
Column() {
Button('测试').onClick(() => {
console.info(`mLanguangeData.Languange[0].name:${JSON.parse(jsonStr)['Languange'][0]['name']}`)
console.info(`mLanguangeData.Languange[0].name:${JSON.parse(jsonStr)['Languange'][1]['desc']}`)
let list: Object[] = JSON.parse(jsonStr)['Languange']
console.info(`mLanguangeData.Languange:${JSON.stringify(list)}`)
for (let i = 0; i < list.length; i++) {
console.info(`mLanguangeData.item_${i}:${JSON.stringify(list[i])}`)
}
})
}
.height('100%')
.width('100%')
}
}
打印
mLanguangeData.Languange[0].name:你好
mLanguangeData.Languange[0].name:英文
mLanguangeData.Languange:[{"index":1,"desc":"中文","name":"你好"},{"index":2,"desc":"英文","name":"hello"}]
mLanguangeData.item_0:{"index":1,"desc":"中文","name":"你好"}
mLanguangeData.item_1:{"index":2,"desc":"英文","name":"hello"}
但是我不建议你这样做,同样是使用javascript,在h5端如果数据处理不好,顶多就是显示不出来,但是在app端会直接闪退。
分析参考:https://developer.huawei.com/consumer/cn/blog/topic/03155225705890022
感谢
let jsonStr:string = `
{"Languange": [{
"index": 1,
"desc": "中文",
"name": "你好"
}, {
"index": 2,
"desc": "英文",
"name": "hello"
}]
}
`
class LanguangeData{
Languange:LanguangeItem[] = []
}
class LanguangeItem{
index:number = 0
desc:string =""
name:string = ""
}
[@Entry](/user/Entry)
[@Component](/user/Component)
struct Page08 {
build() {
Column() {
Button('测试').onClick(()=>{
let mLanguangeData :LanguangeData = JSON.parse(jsonStr)
console.info(`mLanguangeData.Languange[0].name:${mLanguangeData.Languange[0].name}`)
console.info(`mLanguangeData.Languange[1].desc:${mLanguangeData.Languange[1].desc}`)
})
}
.height('100%')
.width('100%')
}
}
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
打印
mLanguangeData.Languange[0].name:你好
mLanguangeData.Languange[1].desc:英文
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
感谢您的回答,这样可以拿的到,但是每次拿类似这样的数据都会先创建两个实体类,创建第二层还好,第一层就一个属性、正常情况实体类也不应该写在page上,不方便其他页面调用。类似于这样的接口如果多了,实体类也就会变得很多。有没有类似于java直接转List的方法:像这样 Type type = new TypeToken<List<LanguangeItem>>(){}.getType(); Gson gson=new Gson(); List<LanguangeItem> LanguangeItems=gson.fromJson(json.optString(“currency”),type);
请问找到实现的方法了吗?我也有这样的需求
在HarmonyOS鸿蒙Next中,将JSON字符串转换为List通常涉及使用JSON解析库。鸿蒙系统提供了相应的API来处理JSON数据。以下是一个简要的示例,展示如何将JSON字符串转换为List:
-
引入必要的库:确保你的项目中已经包含了JSON解析的库,鸿蒙SDK通常包含
org.json
或类似的库。 -
编写解析代码:
import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; public class JsonToListExample { public static void main(String[] args) { String jsonString = "[{\"name\":\"John\"}, {\"name\":\"Doe\"}]"; try { JSONArray jsonArray = new JSONArray(jsonString); int length = jsonArray.length(); for (int i = 0; i < length; i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); String name = jsonObject.getString("name"); System.out.println(name); // 可以将解析的数据添加到List中 } } catch (JSONException e) { e.printStackTrace(); } } }
上述代码示例展示了如何将JSON字符串解析为JSONArray,并遍历数组中的每个JSONObject。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html