递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 8307|回复: 13
打印 上一主题 下一主题

[安卓] JSON取文本值失败

[复制链接]

9

主题

86

帖子

271

积分

中级会员

Rank: 3Rank: 3

积分
271
跳转到指定楼层
楼主
发表于 2021-7-15 14:41:49 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我的数据   {"contact0":{"lastname":"华为","mobile":"4008308300","mobileEmail":"4008308300"},"contact1":{"mobile":"2397","mobileEmail":"2397","lastname":"街道"},"contact2":{"lastname":"安埠","mobile":"0466","mobileEmail":"0466"}}

程序运行到取文本值就退出,不知道什么原因,请指教,谢谢。

QQ图片20210715143515.png (31.76 KB, 下载次数: 89)

QQ图片20210715143515.png

main.v

28.12 KB, 下载次数: 2

回复

使用道具 举报

9

主题

86

帖子

271

积分

中级会员

Rank: 3Rank: 3

积分
271
14#
 楼主| 发表于 2021-7-16 15:27:35 | 只看该作者
感谢 火绒 前辈,能得到这么耐心详细的指导,真的是我的荣幸。
回复

使用道具 举报

444

主题

1万

帖子

4万

积分

超级版主

Rank: 8Rank: 8

积分
40551
13#
发表于 2021-7-16 10:42:54 | 只看该作者

评分

参与人数 1金钱 +3 收起 理由
Yes + 3 赞一个!

查看全部评分

安卓无障碍实战课:点击查看
交流群:641526939
回复

使用道具 举报

51

主题

540

帖子

4245

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
4245
12#
发表于 2021-7-16 10:28:53 | 只看该作者
这个是修改后的,你可以参考一下

修改后的.rar

445.58 KB, 下载次数: 10

评分

参与人数 1金钱 +15 收起 理由
Yes + 15 感谢

查看全部评分

回复

使用道具 举报

9

主题

86

帖子

271

积分

中级会员

Rank: 3Rank: 3

积分
271
11#
 楼主| 发表于 2021-7-16 10:21:42 | 只看该作者
谢谢您的指点。
回复

使用道具 举报

51

主题

540

帖子

4245

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
4245
10#
发表于 2021-7-16 10:01:45 | 只看该作者
Yes 发表于 2021-7-16 09:20
{"contact0":{"lastname":"华为","mobile":"4008308300","mobileEmail":"4008308300"},"contact1":{"mobil ...

我看了一下你的源码,问题出在对json数组和json对象的概念不清,也就是对什么是数组什么是对象分不清,你可以这么理解当你取出的内容是{“”:“”}这种的时候就是对象,当你取出的内容是[]这个标志的时候json数组,那好回到你的例子中:
{"contact0":{"lastname":"华为","mobile":"4008308300","mobileEmail":"4008308300"},"contact1":{"mobile":"2397","mobileEmail":"2397","lastname":"街道"},"contact2":{"lastname":"安埠","mobile":"0466","mobileEmail":"0466"}},上边这一串很明显最外层是{},所以你应该想到用json对象类去处理,再看一下下边的-------[{"lastname":"华为客服","mobile":"4008308300","mobileEmail":"4008308300"},{"mobile":"2397","mobileEmail":"2397","lastname":"街道"},{"lastname":"安埠","mobile":"0466","mobileEmail":"0466"}],最外层是一个[] ,说明他是一个数组,我们就先用json数组类创建一下
回复

使用道具 举报

9

主题

86

帖子

271

积分

中级会员

Rank: 3Rank: 3

积分
271
9#
 楼主| 发表于 2021-7-16 09:20:32 | 只看该作者
{"contact0":{"lastname":"华为","mobile":"4008308300","mobileEmail":"4008308300"},"contact1":{"mobile":"2397","mobileEmail":"2397","lastname":"街道"},"contact2":{"lastname":"安埠","mobile":"0466","mobileEmail":"0466"}}

原始数据是这种,我用代码取出到数组里面,写出来是这种

{"lastname":"华为","mobile":"4008308300","mobileEmail":"4008308300"},{"mobile":"2397","mobileEmail":"2397","lastname":"街道"},{"lastname":"安埠","mobile":"0466","mobileEmail":"0466"}

接着用JSON数组类.创建子文本数据,  到文本 (JSON数组类.创建自数组 ()) 也没问题,成功写出来了,就是对象.取文本值()过不去,程序直接闪退。
回复

使用道具 举报

51

主题

540

帖子

4245

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
4245
8#
发表于 2021-7-16 09:10:51 | 只看该作者
Yes 发表于 2021-7-16 08:54
我写的时候,直接把数据写在局部变量里面这个过程没有问题,但是把原始数据经过整理后写到数组里面再这样 ...

原始数据是不是创建json失败,造成空对象,操作空对象就会造成奔溃,我们给你的代码可以没有空对象监测,但是你最好加上
回复

使用道具 举报

9

主题

86

帖子

271

积分

中级会员

Rank: 3Rank: 3

积分
271
7#
 楼主| 发表于 2021-7-16 08:54:14 | 只看该作者
火绒 发表于 2021-7-15 16:40
算了,我把上边的那个示例的数据改成你这个格式,你看看是不是这样

我写的时候,直接把数据写在局部变量里面这个过程没有问题,但是把原始数据经过整理后写到数组里面再这样处理就出现程序退出的问题。
回复

使用道具 举报

9

主题

86

帖子

271

积分

中级会员

Rank: 3Rank: 3

积分
271
6#
 楼主| 发表于 2021-7-16 08:40:00 | 只看该作者
谢谢您的代码,我上传了完整的代码。

新建文件夹.zip

599.33 KB, 下载次数: 1

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-11-25 17:03 , Processed in 0.101661 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表