java json 数组 返回数组对象_java – 迭代JSON数组对象

我正在查询并返回一个json字符串,为了这个例子,我将发布一个例子.我试图找出如何挖掘值数组并找到哪个标记为默认值.

{

"id": "333706819617",

"guid": "4aCdriCG0WvfYEUkFf8_xqQEFxgwgNU8",

"title": "Test entry",

"author": "",

"description": "Desc",

"added": 1411702963000,

"content": [

{

"audioChannels": 2,

"audioSampleRate": 44100,

"bitrate": 281656,

"checksums": {

"md5": "70DF3E21131F9F02C3F0A74F3664AB73"

},

"contentType": "audio",

"duration": 43.258,

"expression": "full",

"fileSize": 1522986,

"frameRate": 0.0,

"format": "AAC",

"height": 288,

"isDefault": false,

"language": "en",

"sourceTime": 0.0,

"url": "http://example.com/dZiASoxchRyS",

"width": 352

},

{

"audioChannels": 2,

"audioSampleRate": 44100,

"bitrate": 160000,

"checksums": {

"md5": "3AC622D31B9DED37792CC7FF2F086BE6"

},

"contentType": "audio",

"duration": 43.206,

"expression": "full",

"fileSize": 866504,

"frameRate": 0.0,

"format": "MP3",

"height": 0,

"isDefault": false,

"language": "",

"sourceTime": 0.0,

"url": "http://example.com/59M_PSFgGGXE",

"width": 0

}

],

"thumbnails": [

{

"audioChannels": 0,

"audioSampleRate": 0,

"bitrate": 0,

"checksums": {

"md5": "BE8C98A07B3FE9020BFA464C42112999"

},

"contentType": "image",

"duration": 0.0,

"expression": "full",

"fileSize": 20379,

"frameRate": 0.0,

"format": "JPEG",

"height": 256,

"isDefault": true,

"language": "",

"sourceTime": 0.0,

"url": "http://img.example.com/waveform.jpg",

"width": 256

}

]

}

我获取JSON字符串并将其转换回JSONObject

JSONObject mediaObject = new Gson().fromJson(mediaString, JSONObject.class);

String content = mediaObject.optString("content");

当我输出内容时,它返回以下内容.

{values=[{nameValuePairs={audioChannels=2.0, audioSampleRate=44100.0, bitrate=281656.0, checksums={nameValuePairs={md5=70DF3E21131F9F02C3F0A74F3664AB73}}......

如何正确浏览内容的值并找到isDefault的值?在示例JSON中没有isDefault = true的内容,因此默认为第一个对象.

似乎我只能将值作为字符串来定位,我是否必须将内容转换为JSONArray?

编辑:我似乎无法将mediaObject.content转换为JSONArray. mediaObject.optJSONArray(“content”)返回null.我也尝试将它作为一个字符串,然后转换为JSONArray,没有占上风.

编辑2:发现数据的问题是什么,当我用gson解析json时,它弄乱了最终输出的数据.

所以我改成了新的Gson().toJson(jsonObject);到jsonObject.toString())我现在可以使用optJSONArray来定位数组.为了将它们的数据恢复到JSONObject,我使用了JSONObject mediaObject = new JSONObject(mediaString);

GSON正在改变这些数据

解决方法:

您可以改为使用JSONArray,而不是从JSONObject中提取内容的字符串值

JSONArray content = mediaObject.getJSONArray("content");

现在,您可以使用非常传统的for循环遍历数组中的对象

for(int i = 0; i < content.length(); i++) {

JSONObject mediaItem = content.getJSONObject(i);

boolean itemIsDefault = mediaItem.getBoolean("isDefault");

}

标签:json,java,android,gson

来源: https://codeday.me/bug/20190609/1204595.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值