一. 序章
文章评论里后台有一些小伙伴,针对具体数据容错的场景,提出了具体的问题。今天就在这篇文章里统一解答,并且给出解决方案。
(资料图)
二. GSON 数据容错实例
就像前文中介绍的一样,GSON 已经提供了一些简单的注解,去做数据的容错处理。更复杂的操作,就需要用到 TypeAdapter 了,需要注意的是,一旦上了 TypeAdapter 之后,注解的配置就会失效。
2.1 什么是 TypeAdapter
TypeAdapter 是 GSON 2.1 版本开始支持的一个抽象类,用于接管某些类型的序列化和反序列化。TypeAdapter 最重要的两个方法就是 write()
和 read()
,它们分别接管了序列化和反序列化的具体过程。
如果想单独接管序列化或反序列化的某一个过程,可以使用 JsonSerializer 和 JsonDeserializer 这两个接口,它们组合起来的效果和 TypeAdapter 类似,但是其内部实现是不同的。
简单来说,TypeAdapter 是支持流的,所以它比较省内存,但是使用起来有些不方便。而 JsonSerializer 和 JsonDeserializer 是将数据都读到内存中再进行操作,会比 TypeAdapter 更费内存,但是 API 使用起来更清晰一些。
虽然 TypeAdapter 更省内存,但是通常我们业务接口所使用的那点数据量,所占用的内存其实影响不大,可以忽略不计。
因为 TypeAdapter、JsonSerializer 以及 JsonDeserializer 都需要配合 GsonBuilder.registerTypeAdapter()
方法,所以在本文中,此种接管方式,统称为 TypeAdapter 接管。
2.2 空字符串转 0
对于一些强转有效的类型转换,GSON 本身是有一些默认的容错机制的。比如:将字符串 “18” 转换成 Java 中整型的 18,这是被默认支持的。
例如我有一个记录用户信息的 User 类。
class User{ var name = "" var age = 0 override fun toString(): String { return """ { "name":"${name}", "age":${age} } """.trimIndent() }}
User 类中包含 name
和 age
两个字段,其中 age
对应的 JSON 类型,可以是 18
也可以是 "18"
,这都是允许的。
{"name":"承香墨影","age":18 // "age":"18"}
那假如服务端说,这个用户没有填年龄的信息,所以直接返回了一个空串 ""
,那这个时候客户端用 Gson 解析就悲剧了。
这当然是服务端的问题,如果数据明确为 Int 类型,那么就算是默认值也应该是 0 或者 -1。
但遇到这样的情况,你还用默认的 GSON 策略去解析,你将得到一个 Crash。
Caused by: com.google.gson.JsonSyntaxException: - java.lang.NumberFormatException: --empty String
没有一点意外也没有一点惊喜的 Crash 了,那接下来看看如何解决这样的数据容错问题?
因为这里的场景中,只需要反序列化的操作,所以我们实现 JsonDeserializer 接口即可,接管的是 Int 类型。直接上例子吧。
class IntDefaut0Adapter : JsonDeserializer { override fun deserialize(json: JsonElement?, typeOfT: Type?, context: JsonDeserializationContext?): Int { if (json?.getAsString().equals("")) { return 0 } try { return json!!.getAsInt() } catch (e: NumberFormatException) { return 0 } }}fun intDefault0(){ val jsonStr = """ { "name":"承香墨影", "age":"" } """.trimIndent() val user = GsonBuilder() .registerTypeAdapter( Int::class.java, IntDefaut0Adapter()) .create() .fromJson(jsonStr,User::class.java) Log.i("cxmydev","user: ${user.toString()}")}
在 IntDefaut0Adapter 中,首先判断数据字符串是否为空字符串 ""
,如果是则直接返回 0,否则将其按 Int 类型解析。在这个例子中,将整型 0 作为一个异常参数进行处理。
2.3 null、[]、List 转 List
还有一些小伙伴比较关心的,对于 JSONObject 和 JSONArray 兼容的问题。
例如需要返回一个 List,翻译成 JSON 数据就应该是方括号 []
包裹的 JSONArray。但是在列表为空的时候,服务端返回的数据,什么情况都有可能。
{"name":"承香墨影","languages":["EN","CN"] // 理想的数据// "languages":""// "languages":null// "languages":{}}
例子的 JSON 中,languages
字段表示当前用户所掌握的语言。当语言字段没有被设置的时候,服务端返回的数据不一致,如何兼容呢?
我们在原本的 User 类中,增加一个 languages 的字段,类型为 ArrayList。
var languages = ArrayList()
在 Java 中,列表集合都会实现 List 接口,所以我们在实现 JsonDeserializer 的时候,解析拦截的应该是 List。
在这个情况下,可以使用 JsonElement 的 isJsonArray()
方法,判断当前是否是一个合法的 JSONArray 的数组,一旦不正确,就直接返回一个空的集合即可。
class ArraySecurityAdapter:JsonDeserializer>{ override fun deserialize(json: JsonElement, typeOfT: Type?, context: JsonDeserializationContext?): List<*> { if(json.isJsonArray()){ val newGson = Gson() return newGson.fromJson(json, typeOfT) }else{ return Collections.EMPTY_LIST } }}fun listDefaultEmpty(){ val jsonStr = """ { "name":"承香墨影", "age":"18", "languages":{} } """.trimIndent() val user = GsonBuilder() .registerTypeHierarchyAdapter( List::class.java, ArraySecurityAdapter()) .create() .fromJson(jsonStr,User::class.java) Log.i("cxmydev","user: ${user.toString()}")}
其核心就是 isJsonArray()
方法,判断当前是否是一个 JSONArray,如果是,再具体解析即可。到这一步就很灵活了,你可以直接用 Gson 将数据反序列化成一个 List,也可以将通过一个 for 循环将其中的每一项单独反序列化。
需要注意的是,如果依然想用 Gson 来解析,需要重新创建一个新的 Gson 对象,不可以直接复用 JsonDeserializationContext,否则会造成递归调用。
另外还有一个细节,在这个例子中,调用的是 registerTypeHierarchyAdapter()
方法来注册 TypeAdapter,它和我们前面介绍的 registerTypeAdapter()
有什么区别呢?
通常我们会根据不同的场景,选择不同数据结构实现的集合类,例如 ArrayList 或者 LinkedList。但是 registerTypeAdapter()
方法,要求我们传递一个明确的类型,也就是说它不支持继承,而 registerTypeHierarchyAdapter()
则可以支持继承。
我们想用 List 来替代所有的 List 子类,就需要使用 registerTypeHierarchyAdapter()
方法,或者我们的 Java Bean 中,只使用 List。这两种情况都是可以的。
2.4 保留原 Json 字符串
看到这个小标题,可能会有疑问,保留原 Json 字符串是一个什么情况?得到的 Json 数据,本身就是一个字符串,且挺我细细说来。
举个例子,前面定义的 User 类,需要存到 SQLite 数据库中,语言(languages)字段也是需要存储的。说到 SQLite,当然优先使用一些开源的 ORM 框架了,而不少优秀的 ORM-SQLite 框架,都通过外键的形式支持了一对多的存储。例如一篇文章对应多条评论,一条用户信息对应对应多条语言信息。
这种场景下我们当然可以使用 ORM 框架本身提供的一对多的存储形式。但是如果像现在的例子中,只是简单的存储一些有限的数据,例如用户会的语言(languages),这种简单的有限数据,用外键有一些偏重了。
此时我们就想,要是可以直接在 SQLite 中存储 languages 字段的 JSON,将其当成一个字符串去存储,是不是就简单了?把一个多级的结构拉平成一级,剩下的只需要扩展出一个反序列化的方法,对业务来说,这些操作都是透明的。
那拍脑袋想,如果 Gson 有简单的容错,那我们将这个解析的字段类型定义成 String,是不是就可以做到了?
@SerializedName("languages")var languageStr = ""
很遗憾,这并没有办法做到,如果你这样使用,你将得到一个 IllegalStateException 的异常。
Caused by: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected a string but was BEGIN_ARRAY at line 4 column 18 path $.languages
之所以会出现这样的情况,简单来说,虽然 deserialize()
方法传递的参数都是 JsonElement,但是 JsonElement 只是一个抽象类,最终会根据数据的情况,转换成它的几个实现类的其中之一,这些实现类都是 final class,分别是 JsonObject、JsonArray、JsonPrimitive、JsonNull,这些从命名上就很好理解了,它们代表了不通的 JSON 数据场景,就不过多介绍了。
使用了 Gson 之后,遇到花括号 {}
会生成一个 JsonObject,而字符串则是基本类型的 JsonPrimitive 对象,它们在 Gson 内部的解析流程是不一样的,这就造成了 IllegalStateException 异常。
那么接下来看看如何解决这个问题。
既然 TypeAdapter 是 Gson 解析的银弹,找不到解决方案,用它就对了。思路继续是用 JsonDeserializer 来接管解析,这一次将 User 类的整个解析都接管了。
class UserGsonAdapter:JsonDeserializer{ override fun deserialize(json: JsonElement, typeOfT: Type?, context: JsonDeserializationContext?): User { var user = User() if(json.isJsonObject){ val jsonObject = JSONObject(json.asJsonObject.toString()) user.name = jsonObject.optString("name") user.age = jsonObject.optInt("age") user.languageStr = jsonObject.optString("languages") user.languages = ArrayList() val languageJsonArray = JSONArray(user.languageStr) for(i in 0 until languageJsonArray.length()){ user.languages.add(languageJsonArray.optString(i)) } } return user }}fun userGsonStr(){ val jsonStr = """ { "name":"承香墨影", "age":"18", "languages":["CN","EN"] } """.trimIndent() val user = GsonBuilder() .registerTypeAdapter( User::class.java, UserGsonAdapter()) .create() .fromJson(jsonStr,User::class.java) Log.i("cxmydev","user: \n${user.toString()}")}
在这里我直接使用标准 API org.json 包中的类去解析 JSON 数据,当然你也可以通过 Gson 本身提供的一些方法去解析,这里只是提供一个思路而已。
最终 Log 输出的效果如下:
{"name":"承香墨影","age":18,"languagesJson":["CN","EN"],"languages size:"2}
在这个例子中,最终解析还是使用了标准的 JSONObject 和 JSONArray 类,和 Gson 没有任何关系,Gson 只是起到了一个桥接的作用,好像这个例子也没什么实际用处。
不谈场景说应用都是耍流氓,那么如果是使用 Retrofit 呢?Retrofit 可以配置 Gson 做为数据的转换器,在其内部就完成了反序列化的过程。这种情况,配合 Gson 的 TypeAdapter,就不需要我们在额外的编写解析的代码了,网络请求走一套逻辑即可。
如果觉得在构造 Retrofit 的时候,为 Gson 添加 TypeAdapter 有些入侵严重了,可以配合 @JsonAdapter
注解使用。
三. 小结时刻
针对服务端返回数据的容错处理,很大一部分其实都是来自双端没有保证数据一致的问题。而针对开发者来说,要做到外部数据均不可信的,客户端不信本地读取的数据、不信服务端返回的数据,服务端也不能相信客户端传递的数据。这就是所谓防御式编程。
言归正传,我们小结一下本文的内容:
TypeAdapter(包含JsonSerializer、JsonDeserializer) 是 Gson 解析的银弹,所有 Json 解析的定制化要求都可以通过它来实现。registerTypeAdapter()
方法需要制定确定的数据类型,如果想支持继承,需要使用 registerTypeHierarchyAdapter()
方法。如果数据量不大,推荐使用 JsonSerializer 和 JsonDeserializer。针对整个 Java Bean 的解析接管,可以使用 @JsonAdapter
注解。
上一篇:最新资讯:小学英语诗歌朗诵稿两分钟_小学英语诗歌朗诵稿
下一篇:最后一页
X 关闭
推荐内容
- 【新要闻】[Gson]Gson 解析 Json 容错策略
- 最新资讯:小学英语诗歌朗诵稿两分钟_小学英语诗歌朗诵稿
- 【全球热闻】北京推行个人二手房交易“带押过户” 满足四类条件即可办理
- 抢钱俱乐部:行情能否变盘,今日关注分水岭!|环球百事通
- 【地评线】南海时评:“好评中国”再起航 奋进中国勇向前
- 要闻速递:广州新规:购买新能源车,最高补贴一万元
- 深圳今年首批供地:5宗地块揽金72亿元 平均溢价率10.13%
- 【天天热闻】球迷排队等三笘薫签名,前田大然调侃:和他在一起我太蠢了
- 环球观天下!新一轮油价调整今晚将至,预计迎来年内第三跌
- 蔡英文窜美 毛宁:过境是假宣扬“台独”是真-天天热点
- qq被冻结了怎么办华为_qq被冻结了怎么办 重点聚焦
- 奥特曼小说主角是黑暗特利迦_奥特曼小说主角是黑暗|全球热资讯
- 惠安台湾农民创业园:呵护农企成长 助力村民增收
- 扬州“00后”小伙捐献造血干细胞不留名|最新快讯
- 招商引资享机遇 共谋发展话未来|我州召开“川商渝商甘孜行”活动座谈会 全球快看点
- 如何识别食油中掺入了米汤 识别食油中掺入了米汤的方法_环球即时
- 全网曝光量超2.6亿,百度营销携众教育品牌开启现象级招生狂欢
- 诈骗“引流”团伙被端 17人被抓 涉案金额超千万元
- 估值修复下的服装行业有何机会?
- 年报观察 | 雅居乐毛利急降 每日看点
- 重磅!国六B或将延迟实施,因经销商7月1日前无法完成清库_世界观天下
- 昭衍新药建议回购及注销2.97万股限制性A股股票 时讯
- 最新消息:商城县伏山乡:以人居环境整治促乡村振兴
- CNN:政治压力等因素下,许多美国公司对枪支暴力保持沉默
- 全球快消息!三峡库区绿色智能船舶产业创新试点示范基地落户秭归
- “电保姆”为高新区(新市区)企业用电保驾护航
- “我不上你的当”省直象峰幼儿园开展安全防拐骗演练
- 刚刚,2亿人口经济大国宣布:和中国做生意不要美元,就要人民币!总统也将访华
- 迄今为止最大的黑洞?英天文学家发现超大黑洞,质量是太阳的300亿倍!
- 圣斗士之天界篇:雅典娜刚开始为什么不解开星矢的哈迪斯诅咒呢?
- 15家北交所公司公布2022年度分配方案
- 世界热消息:海南活猪将首次进入澳门市场
- 今日播报!对医保外新冠治疗药实施价格分类管理
- 全球快消息!产业“逐绿”,海通恒信助力城市公交迈入新能源时代
- 今日看点:中国科学院植物所揭示调控水稻籽粒大小的新通路
- 环球播报:主力资金连续5日以上净流入三峡旅游等57股
- 环球热点!日本更新富士山喷发避难计划:乘车避难改为“步行避难”
- 安远路537号 天天讯息
- 环球今头条!桥段是什么意思呢_桥段是什么意思
- 高校一男生躲女厕两小时被抓?校方回应
- 宣称“0防腐”却检出防腐剂!“苏州桥”“顺昌源”两款果酒涉嫌虚假宣传
- 蔡英文睽违3年出访“国安”高官留守因应状况 世界即时
- 天天资讯:如何粉刷金属纱门_男生新年礼物送什么
- 2023杭州西湖夜游游船(线路特色+游船票价+预约售票)
- 每日快讯!内蒙古印发《普通高中学业水平合格性考试考籍管理办法(试行)》的通知
- 当前简讯:寻访最美气象台站!中央媒体走基层看气象主题采访活动启动!
- 台式机蓝牙适配器连接蓝牙接收器(台式机蓝牙适配器连接蓝牙音箱)_天天时快讯
- 野生大熊猫母子再同框 踏雪吃夜宵悠然自得_全球快报
- 深圳东站服务咨询电话_深圳东站-世界看热讯
- 我市水利建设质量考核蝉联全省A级第一 为高质量发展注入“水动能”|世界聚看点
- 全球快资讯丨人人乐:公司暂未涉及CHATGPT
- 每日热讯!平凉华亭砚峡:加强小麦春管 助力夏粮丰收
- 【全球新要闻】中创新航将向锂电洛阳及其附属销售锂电池部件及相关产品
- 东航机长有个性中国星配资 甩下乘客起飞
- 给主队败人品!3分力克辽宁后,广厦女球迷的行为惹争议
- 全球观点:跨季资金面宽松,接下来资金利率如何演绎?
- 氦气球价格多少钱一个_氦气球多少钱一个 每日快讯
- 世界关注:神一般的存在!同花顺董事长堪称是在1929年大崩盘前卖出股票的巴鲁克式人物
- 蒙蒂:艾顿刚复出身体有点生锈 完全康复后他会表现更好
- 焦点热讯:斩获3银,创造历史!国际残疾人职业技能竞赛广东选手凯旋
- 环球简讯:专家引领明方向 慧心育人共成长——镇平县高丘镇中心校成功举办班主任管理培训会
- 联合国教科文组织正式启动2023年创意城市网络申报工作-全球速看料
- 德邦证券承销“新希望”债券规模65亿元 以金融力量助力乡村振兴_环球热点
- 环球热文:人文景观啥意思_人文景观是什么意思
- 理想汽车在临汾成立能源服务公司|环球微动态
- 民航复苏态势显著 上周执行客运航班同比增长300% 环球微动态
- 今日热议:一个人越来越没钱的1个细节,越早明白越好
- 临夏治银屑病哪里医院好啊-即时看
- 海南国际仲裁院证券期货业调解/仲裁中心揭牌
- 当日快讯:我国新能源汽车多项指标性能明显提高_环球报道
- 东阳光:融资净买入425.33万元,融资余额10.07亿元(03-27)-热头条
- 世界热点评!广西板块3月27日跌0.1%,*ST银河领跌,主力资金净流出2.34亿元
- 环球今头条!大唐创业起居注之李渔译本(贰)
- 好消息!北京市180家药店今起实现异地结算 当前时讯
- 每日速递:盛达资源:就重组合同纠纷案提起诉讼 涉案额暂计12.12亿元
- 环球最资讯丨李弘权确实是在本赛季展现出了初生牛犊不怕虎的气势
- 能否挑战Model S\路虎\卡车?奇瑞小蚂蚁:给我一根杠杆试试!_每日视点
- 害怕自己被AI取代?不如让它先取代你老板
- 日媒曝在北京被捕日本男子身份
- 2023佛山清明祭扫可以多人同时预约吗?|世界新要闻
- up池是什么意思_call up是什么意思_当前速看
- 全球新动态:现代VelosterGrapplerConcept将在SEMA上首次亮相
- 智飞生物净利降26%销售3300人占员工总数过半 蒋仁生吴冠江套现逾200亿市值蒸发2300亿
- 亚通股份:3月24日获融资买入267.24万元,占当日流入资金比例20.63%-每日看点
- 国家级铁路枢纽正式确定!太原兰州入围,苏州宁波无缘
- 世界快资讯:普利策优异公众服务奖_对于普利策优异公众服务奖简单介绍
- 全球热资讯!菠萝蜜切开没熟放着会坏吗?
- 社保中间断了几个月怎么办,可以进行补缴
- 汽车越开油耗越高,是什么情况?汽车专家:这3个地方该洗该换了-当前消息
- 动力电池产业链景气度持续提升-世界观焦点
- 看点:塑料奶瓶什么材质好
- prometheus 服务发现原理
- 美联储称美银行存款一周流失近千亿美元 全球最新
- 环球快看:微博之夜85花全员高定赢麻了!杨幂气场全开,刘诗诗把领口缝上了
- 关于年的传说 每日精选
- 榷酤
- 玲龙一号即将建成,可改变世界核能格局?能用到核动力航母上吗?
- 全球报道:市场监管总局发布四部反垄断法配套规章
- 英雄联盟皮城女警射程是多少啊 今热点
- 白凉粉的成分有哪些_市面上白凉粉成分是什么今日更新-微头条
精彩推荐
-
【新要闻】[Gson]Gson 解析 Json 容错策略2023-04-01
-
最新资讯:小学英语诗歌朗诵稿两分钟_小学英语诗歌朗诵稿2023-04-01
-
【全球热闻】北京推行个人二手房交易“带押过户” 满足四类条件即可办理2023-03-31
-
抢钱俱乐部:行情能否变盘,今日关注分水岭!|环球百事通2023-03-31
-
【地评线】南海时评:“好评中国”再起航 奋进中国勇向前2023-03-31
-
要闻速递:广州新规:购买新能源车,最高补贴一万元2023-03-31
-
深圳今年首批供地:5宗地块揽金72亿元 平均溢价率10.13%2023-03-31
-
【天天热闻】球迷排队等三笘薫签名,前田大然调侃:和他在一起我太蠢了2023-03-31
-
环球观天下!新一轮油价调整今晚将至,预计迎来年内第三跌2023-03-31
-
蔡英文窜美 毛宁:过境是假宣扬“台独”是真-天天热点2023-03-31
-
qq被冻结了怎么办华为_qq被冻结了怎么办 重点聚焦2023-03-31
-
奥特曼小说主角是黑暗特利迦_奥特曼小说主角是黑暗|全球热资讯2023-03-31
-
惠安台湾农民创业园:呵护农企成长 助力村民增收2023-03-31
-
扬州“00后”小伙捐献造血干细胞不留名|最新快讯2023-03-31
-
招商引资享机遇 共谋发展话未来|我州召开“川商渝商甘孜行”活动座谈会 全球快看点2023-03-31
-
如何识别食油中掺入了米汤 识别食油中掺入了米汤的方法_环球即时2023-03-31
-
全网曝光量超2.6亿,百度营销携众教育品牌开启现象级招生狂欢2023-03-31
-
诈骗“引流”团伙被端 17人被抓 涉案金额超千万元2023-03-31
-
估值修复下的服装行业有何机会?2023-03-31
-
年报观察 | 雅居乐毛利急降 每日看点2023-03-31
-
重磅!国六B或将延迟实施,因经销商7月1日前无法完成清库_世界观天下2023-03-31
-
昭衍新药建议回购及注销2.97万股限制性A股股票 时讯2023-03-31
-
最新消息:商城县伏山乡:以人居环境整治促乡村振兴2023-03-30
-
CNN:政治压力等因素下,许多美国公司对枪支暴力保持沉默2023-03-30
-
全球快消息!三峡库区绿色智能船舶产业创新试点示范基地落户秭归2023-03-30
-
“电保姆”为高新区(新市区)企业用电保驾护航2023-03-30
-
“我不上你的当”省直象峰幼儿园开展安全防拐骗演练2023-03-30
-
刚刚,2亿人口经济大国宣布:和中国做生意不要美元,就要人民币!总统也将访华2023-03-30
-
迄今为止最大的黑洞?英天文学家发现超大黑洞,质量是太阳的300亿倍!2023-03-30
-
圣斗士之天界篇:雅典娜刚开始为什么不解开星矢的哈迪斯诅咒呢?2023-03-30
-
15家北交所公司公布2022年度分配方案2023-03-30
-
世界热消息:海南活猪将首次进入澳门市场2023-03-30
-
今日播报!对医保外新冠治疗药实施价格分类管理2023-03-30
-
全球快消息!产业“逐绿”,海通恒信助力城市公交迈入新能源时代2023-03-30
-
今日看点:中国科学院植物所揭示调控水稻籽粒大小的新通路2023-03-30
-
环球播报:主力资金连续5日以上净流入三峡旅游等57股2023-03-30
-
环球热点!日本更新富士山喷发避难计划:乘车避难改为“步行避难”2023-03-30
-
安远路537号 天天讯息2023-03-30
-
环球今头条!桥段是什么意思呢_桥段是什么意思2023-03-30
-
高校一男生躲女厕两小时被抓?校方回应2023-03-29
-
宣称“0防腐”却检出防腐剂!“苏州桥”“顺昌源”两款果酒涉嫌虚假宣传2023-03-29
-
蔡英文睽违3年出访“国安”高官留守因应状况 世界即时2023-03-29
-
天天资讯:如何粉刷金属纱门_男生新年礼物送什么2023-03-29
-
2023杭州西湖夜游游船(线路特色+游船票价+预约售票)2023-03-29
-
每日快讯!内蒙古印发《普通高中学业水平合格性考试考籍管理办法(试行)》的通知2023-03-29
-
当前简讯:寻访最美气象台站!中央媒体走基层看气象主题采访活动启动!2023-03-29
-
台式机蓝牙适配器连接蓝牙接收器(台式机蓝牙适配器连接蓝牙音箱)_天天时快讯2023-03-29
-
野生大熊猫母子再同框 踏雪吃夜宵悠然自得_全球快报2023-03-29
-
深圳东站服务咨询电话_深圳东站-世界看热讯2023-03-29
-
我市水利建设质量考核蝉联全省A级第一 为高质量发展注入“水动能”|世界聚看点2023-03-29
-
全球快资讯丨人人乐:公司暂未涉及CHATGPT2023-03-29
-
每日热讯!平凉华亭砚峡:加强小麦春管 助力夏粮丰收2023-03-29
-
【全球新要闻】中创新航将向锂电洛阳及其附属销售锂电池部件及相关产品2023-03-29
-
东航机长有个性中国星配资 甩下乘客起飞2023-03-29
-
给主队败人品!3分力克辽宁后,广厦女球迷的行为惹争议2023-03-29
-
全球观点:跨季资金面宽松,接下来资金利率如何演绎?2023-03-29
-
氦气球价格多少钱一个_氦气球多少钱一个 每日快讯2023-03-29
-
世界关注:神一般的存在!同花顺董事长堪称是在1929年大崩盘前卖出股票的巴鲁克式人物2023-03-28
-
蒙蒂:艾顿刚复出身体有点生锈 完全康复后他会表现更好2023-03-28
-
焦点热讯:斩获3银,创造历史!国际残疾人职业技能竞赛广东选手凯旋2023-03-28
-
环球简讯:专家引领明方向 慧心育人共成长——镇平县高丘镇中心校成功举办班主任管理培训会2023-03-28
-
联合国教科文组织正式启动2023年创意城市网络申报工作-全球速看料2023-03-28
-
德邦证券承销“新希望”债券规模65亿元 以金融力量助力乡村振兴_环球热点2023-03-28
-
环球热文:人文景观啥意思_人文景观是什么意思2023-03-28
-
理想汽车在临汾成立能源服务公司|环球微动态2023-03-28
-
民航复苏态势显著 上周执行客运航班同比增长300% 环球微动态2023-03-28
-
今日热议:一个人越来越没钱的1个细节,越早明白越好2023-03-28
-
临夏治银屑病哪里医院好啊-即时看2023-03-28
-
海南国际仲裁院证券期货业调解/仲裁中心揭牌2023-03-28
-
当日快讯:我国新能源汽车多项指标性能明显提高_环球报道2023-03-28
-
东阳光:融资净买入425.33万元,融资余额10.07亿元(03-27)-热头条2023-03-28
-
世界热点评!广西板块3月27日跌0.1%,*ST银河领跌,主力资金净流出2.34亿元2023-03-28
-
环球今头条!大唐创业起居注之李渔译本(贰)2023-03-27
-
好消息!北京市180家药店今起实现异地结算 当前时讯2023-03-27
-
每日速递:盛达资源:就重组合同纠纷案提起诉讼 涉案额暂计12.12亿元2023-03-27
-
环球最资讯丨李弘权确实是在本赛季展现出了初生牛犊不怕虎的气势2023-03-27
-
能否挑战Model S\路虎\卡车?奇瑞小蚂蚁:给我一根杠杆试试!_每日视点2023-03-27
-
害怕自己被AI取代?不如让它先取代你老板2023-03-27
-
日媒曝在北京被捕日本男子身份2023-03-27
-
2023佛山清明祭扫可以多人同时预约吗?|世界新要闻2023-03-27
-
up池是什么意思_call up是什么意思_当前速看2023-03-27
-
全球新动态:现代VelosterGrapplerConcept将在SEMA上首次亮相2023-03-27
-
亚通股份:3月24日获融资买入267.24万元,占当日流入资金比例20.63%-每日看点2023-03-27
-
国家级铁路枢纽正式确定!太原兰州入围,苏州宁波无缘2023-03-27
-
世界快资讯:普利策优异公众服务奖_对于普利策优异公众服务奖简单介绍2023-03-27
-
全球热资讯!菠萝蜜切开没熟放着会坏吗?2023-03-26
-
社保中间断了几个月怎么办,可以进行补缴2023-03-26
-
汽车越开油耗越高,是什么情况?汽车专家:这3个地方该洗该换了-当前消息2023-03-26
-
动力电池产业链景气度持续提升-世界观焦点2023-03-26
-
看点:塑料奶瓶什么材质好2023-03-26
-
prometheus 服务发现原理2023-03-26
-
美联储称美银行存款一周流失近千亿美元 全球最新2023-03-26
-
环球快看:微博之夜85花全员高定赢麻了!杨幂气场全开,刘诗诗把领口缝上了2023-03-26
-
关于年的传说 每日精选2023-03-26
-
榷酤2023-03-26
-
玲龙一号即将建成,可改变世界核能格局?能用到核动力航母上吗?2023-03-25
-
全球报道:市场监管总局发布四部反垄断法配套规章2023-03-25
-
英雄联盟皮城女警射程是多少啊 今热点2023-03-25
-
白凉粉的成分有哪些_市面上白凉粉成分是什么今日更新-微头条2023-03-25