首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从json赋值后打印类的属性时获取null

从JSON赋值后打印类的属性时获取null是因为JSON中某个属性的值为null或者该属性在JSON中不存在。

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于前后端数据交互。在将JSON数据赋值给类的属性时,需要确保JSON中的属性名称与类的属性名称相匹配。

当JSON中某个属性的值为null时,赋值给类的属性后,打印属性时会获取到null值。如果JSON中没有对应的属性,则在打印属性时也会获取到null值。

为了解决这个问题,可以在赋值前先进行判断,确保JSON中的属性存在且值不为null。可以使用条件语句或者try-catch语句来处理。例如,使用Java语言进行示例:

代码语言:txt
复制
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

public class MyClass {
    private String name;
    private Integer age;

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public Integer getAge() {
        return age;
    }

    public static void main(String[] args) {
        String jsonString = "{\"name\": \"John\", \"age\": null}";

        MyClass myClass = new MyClass();
        JSONObject json = JSON.parseObject(jsonString);

        if (json.containsKey("name") && json.getString("name") != null) {
            myClass.setName(json.getString("name"));
        }

        if (json.containsKey("age") && json.getInteger("age") != null) {
            myClass.setAge(json.getInteger("age"));
        }

        System.out.println("Name: " + myClass.getName()); // 输出:Name: John
        System.out.println("Age: " + myClass.getAge()); // 输出:Age: null
    }
}

在上述示例中,首先将JSON字符串解析为JSONObject对象。然后通过判断JSON中是否包含对应的属性,并且属性值不为null,进行赋值操作。最后打印类的属性时,可以获取到正确的结果。

关于JSON的相关概念、优势和应用场景,以及腾讯云相关产品和产品介绍链接地址,请参考以下内容:

  1. JSON概念:JSON是一种基于文本的数据交换格式,用于存储和传输结构化数据。它使用简单的键值对表示数据,具有良好的可读性和可扩展性。
  2. JSON优势:JSON具有轻量、易读、易解析和易于与多种编程语言进行交互等优势。
  3. JSON应用场景:JSON常用于前后端数据交互、API接口返回数据、配置文件存储等场景。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(CVM):提供稳定可靠的云服务器实例,满足各种计算需求。产品介绍链接
  • 腾讯云云数据库MySQL版:提供高性能、可扩展的关系型数据库服务。产品介绍链接
  • 腾讯云云存储(COS):提供安全可靠、高扩展性的云存储服务,适用于图片、音视频、文档等大规模存储场景。产品介绍链接
  • 腾讯云人工智能:提供多项人工智能服务,包括图像识别、语音识别、自然语言处理等。产品介绍链接
  • 腾讯云物联网(IoT):提供端到端的物联网解决方案,帮助用户轻松连接和管理物联网设备。产品介绍链接
  • 腾讯云移动开发:提供移动应用开发的云服务,包括推送、消息队列、移动分析等。产品介绍链接
  • 腾讯云区块链:提供一站式区块链解决方案,包括区块链服务平台、区块链浏览器等。产品介绍链接
  • 腾讯云云原生应用引擎(TKE):提供托管式Kubernetes容器服务,帮助用户快速构建、部署和管理容器化应用。产品介绍链接
  • 腾讯云音视频处理(VOD):提供音视频存储、处理、分发等一体化的解决方案。产品介绍链接
  • 腾讯云网络安全:提供多种网络安全服务,包括DDoS防护、安全加速、Web应用防火墙等。产品介绍链接
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

PHP中 对象自动调用方法:__set()、__get()、__tostring()

但是,对属性读取和赋值操作是非常频繁,因此在 PHP5中,预定义了两个函数 “__get()”和“__set()”来获取赋值属性,以及检查属性“__isset()”和删除属性方法 “__unset...我们为每个属性做了设置和获取方法,在PHP5中给我们提供了专门为属性设置值和获 取值方法,“__set()”和“__get()”这两个方法,这两个方法不是默认存在, 而是我们手工添加到里面去,...因为私有属性已经被封装上了,是不能直接获取(比如:“echo $p1->name”这样直接获取是错误),但是如果你在里面加上了这个方法,在使用“echo $p1->name”这样语句直接获取时候就会自动调用...比如打印一个对象,看看这个对象都有哪些属 性,其值是什么,如果类定义了toString方法,就能在测试,echo打印对象体,对象就会自动调用它所属定义toString方法,格式化输出这个对象所包含数据...原因很简单,echo本来可以打印一个对 象,而且也实现了这个接口,但是PHP对其做了个限制,只有实现toString才允许使用。

2.5K40

Dart语言 函数&

Instance of 'Result' print(code); print(msg); print(data); // 转换成JSON打印,要想执行这个函数,需要在里写一个toJson 方法...get 和 set 类似于提供了一个属性可以直接通过该关键字定义对应属性,以便后面访问和修改get 定义是一个对象set 需要接受一个参数,在使用 set 不可以使用函数传参 ,要用直接赋值。...)); // set 调用方法直接赋值。...预定 在变量或者方法等内容钱加 "_"代表私有的内容,在外面文件不可以访问私有属性。如果类在当前页面定义,在当前页面方法中可以 获取到私有属性。...extends 关键字class Group extends Student, 继承需要有自己构造函数,再构造函数中通过super来继承父级属性继承子类可以直接调用父方法,也可以重写父方法

17720
  • KVC 使用方法详解及底层实现你要知道KVC、KVO、Delegate、Notification都在这里

    valueForUndefinedKey:和setValue:forUndefinedKey:方法,如果不实现该方法设置不存在key默认抛出异常,在实际开发中通常需要从服务端获取大量json数据,...接着我们可以使用runtime将UIPageControl所有属性打印出来,runtime强大之处就在于可以获取任意属性和方法,关于runtime部分本博客有一系列文章来讲解,有兴趣读者可以自行查阅...iOS runtime探究(一): runtime开始理解面向对象到面向过程结构体 我们先打印出UIPageControl所有属性,看一下有没有我们需要,代码如下: 执行下述代码需要import...修改效果 在我们需要修改系统提供UI界面而又束手无策可以使用runtime获取属性来查看是否有可以使用属性或方法,接着可以使用KVC获取相关值或进行赋值操作,这种方法可能也会存在风险,如果获取是苹果禁用私有...,所以,这里猜测底层实现可能是在执行KVC相关方法,在继承树上沿着isa指针按照之前讲解顺序去查找相关属性进行赋值获取操作。

    1.3K70

    特殊数据格式处理-JSON框架Jackson精解第2篇

    五、忽略null字段序列化@JsonInclude 六、忽略指定字段 本篇文章中为大家介绍,一些特殊JOSN数据格式处理-JSON框架Jackson精解第2篇: 一、URL读取JSON数据 二、Unknow...Properties 赋值失败处理 三、未赋值Java Bean序列化 四、日期格式化 一、URL读取JSON数据 Jackson不仅可以将字符串反序列化为 Java POJO对象,还可以请求远程...稿件包含userId,id,title,content属性 PostDTO 是我们自己定义java ,同样包含userId,id,title,content成员变量 下文是控制台打印输出结果,postDTO...有的时候,客户端提供JSON字符串属性,多于我们服务端定义java 成员变量。...这是因为JSON字符串所包含属性,多余Java定义(多出一个阿age,赋值找不到setAge方法)。

    1.8K22

    浅学前端:JavaScript篇(一)

    ,会在鼠标单击这个元素被执行,onclick 方法刚开始是 null,需要赋值才能使用 document.getElementById("p1").onclick = (function(){...特色:属性增删对比一下 Java 中 ObjectJava Object 是以作为模板来创建,对象不能脱离模板范围,一个对象属性、能用方法都是确定好js 对象,不需要什么模板,它属性和方法可以随时加减...里有特殊属性 __proto__ 代表它父对象,js 术语: son 原型对象不同浏览器对打印 son __proto__ 属性显示不同- Edge 打印 console.dir(son)...")子对象 __proto__ 就是函数 prototype 属性JSON之前我们讲 http 请求格式,讲过 json 这种数据格式,它语法看起来与 js 对象非常相似,例如:一个 json...中只能有 null、true|false、数字、字符串(只有双引号)、对象、数组- json 中不能有除以上其它 js 对象特性,如方法等- json属性必须用双引号引起来json 字符串与

    23030

    序列化与反序列化核心用法-JSON框架Jackson精解第一篇

    方法可以将JSON序列化结果进行格式化,更好显示结构,易于查看 @Test void testObject2JSON() throws IOException { //获取对象实例 PlayerStar...,同时影响反序列化 使用上面代码注解之后,JSON序列化结果name属性变成playerName属性 {"playerName":"乔丹" …… 同时影响反序列化,下面的反序列化代码会报错,因为使用了...字段序列化@JsonInclude 当我们不为对象成员变量赋值时候,默认情况下,Jackson序列化结果是下面的这样。..., BigDecimal> salary; //年收入 Map 忽略为null成员变量,JSON序列化结果是下面这样 { "age" : 45, "playerName" : "乔丹" }...举例:如果JSON字符串包含了中被JsonIgnore属性值hobbies,不会被反序列化赋值给java对象成员变量hobbies。 喜欢 (0)or分享 (0)

    3.1K33

    利用Runtime实现简单字典转模型

    我们可以通过写一个框架自动帮我们实现字典转模型,大致思路就是: 遍历模型中属性,然后拿到属性名作为键值去字典中寻找值; 找到值,根据模型属性类型将值转化成正确类型; 给属性赋值。...输出中可以看到通过property_getName()获取每一个objc_property_tname表示成员属性名字,通过property_getAttributes()获取每一个objc_property_t...图中可以看出,属于基本类型属性打印出来类型是null,其他都能正确打印出对应类型。...,应该想到递归,当碰到模型中属性类型是一个模型,将字典中value作为字典处理,然后再调用字典转模型方法返回一个模型,所以在包装类型还要有个属性表示它是否是自定义模型,才能作为依据继续递归...可以看到,很多都不止一次调用了获取属性方法,对于一个来说,要获取全部属性,只要获取一次就够了.获取将结果缓存起来,下次就不必进行不必要计算。

    1.9K60

    利用Runtime实现简单字典转模型

    我们可以通过写一个框架自动帮我们实现字典转模型,大致思路就是: 遍历模型中属性,然后拿到属性名作为键值去字典中寻找值; 找到值,根据模型属性类型将值转化成正确类型; 给属性赋值。...输出中可以看到通过property_getName()获取每一个objc_property_tname表示成员属性名字,通过property_getAttributes()获取每一个objc_property_t...图中可以看出,属于基本类型属性打印出来类型是null,其他都能正确打印出对应类型。...,应该想到递归,当碰到模型中属性类型是一个模型,将字典中value作为字典处理,然后再调用字典转模型方法返回一个模型,所以在包装类型还要有个属性表示它是否是自定义模型,才能作为依据继续递归...可以看到,很多都不止一次调用了获取属性方法,对于一个来说,要获取全部属性,只要获取一次就够了.获取将结果缓存起来,下次就不必进行不必要计算。

    1.2K30

    小邵教你玩转ES6(一)-let,const和解构赋值

    ,而此时var i是处于全局当中 // for循环是同步代码,所以会执行完同步代码 // 再执行setTimeout异步代码,此时i已为3,所以打印出来都是3 for(var i = 0;i < 3...//但是const声明对象不能更改其指向引用地址(即堆区) // 3.1 // 当用普通值赋值给const声明变量,再重新赋值 // 值引用会被更改,所以会报错 const STR1 =..."} // 但是当我们把这个变量重新赋值一个引用地址,则会报错 OBJ = {} // 报错 解构赋值 解构赋值主要分为对象解构和数组解构,在没有解构赋值时候,我们赋值是这样 let arr...' console.log(b) // 1 console.log(c) // 2 // 从这个例子可以看出,在解构赋值过程中,a=undefined,会使用默认值 // 那么当a=null呢?...(JSON.stringify(swr)) console.log(swrcopy) // { name:"邵威儒",age:28 } // 此时我们修改swr属性 swr.age = 29 console.log

    63010

    SpringApplication对象是如何构建? SpringBoot源码(八)

    >> listeners; 可以看到构建SpringApplication对象主要是给上面代码中六个成员属性赋值,现在我接着来看SpringApplication对象构造过程。...属性,用于后面启动流程中打印一些日志。...成员属性赋值而已,做一些初始化工作: 给**resourceLoader**属性赋值,resourceLoader属性,资源加载器,此时传入resourceLoader参数为null; 给**primarySources...,mainApplicationClass属性表示包含main函数,即这里要推断哪个调用了main函数,然后把这个全限定名赋值给mainApplicationClass属性,用于后面启动流程中打印一些日志...属性,然后用于后面启动流程中打印一些日志。

    89300

    最新前端初中级面试题合集一,你确定不看一看嘛

    important > 行内样式>ID选择器 > 选择器 > 标签 > 通配符 > 继承 > 浏览器默认属性 1.属性后面加!...import 会覆盖页面内任何位置定义元素样式 2.作为style属性写在元素内样式 3.id选择器 4.选择器 5.标签选择器 6.通配符选择器(*) 7.浏览器自定义或继承 同一级别:会覆盖先写...break // 跳出中止循环, 提升性能 } } 变量自增/自减 i++ 和 i-- 先赋值自增或者自减 let a = 10; let b = a++ // 先把a赋值给b, 然后在自增1...在赋值给b console.log(b) // 11 console.log(a) // 11 while 循环 do while前循环 while循环 while (条件) { code /...当这段弧长正好等于圆周长360分之一,两条射线夹角大小为1度。(如图1) 弧度定义是:两条射线圆心向圆周射出,形成一个夹角和夹角正对一段弧。

    3.6K20

    JavaScript 入门基础 - 变量 数据类型(二)

    JSON是什么 2.8.2 JSON语法规则 2.8.3 访问对象值 2.8.4 删除对象属性 2.8.5 JSON循环遍历 2.8.6 JSON字符串转换为 JavaScript 对象 ----...1.4 变量语法扩展 1.4.1 更新变量 一个变量被重新赋值,它原有的值就会被覆盖,变量值将最后一次赋值为准。...'; // 字符串类型 2.1.3 数据类型分类 JS 把数据分为两: 简单数据类型(Null、Undefined、String、Number、Boolean) 复杂数据类型(Object) 2.2...,通过length属性可以获取整个字符串长度。...注意:不要直接给数组名赋值,否则里面的数组元素都会被覆盖 2.7.6 冒泡排序 冒泡排序是一种算法,就是把一系列数据按照一定顺序进行排列显示(从小到大或者大到小)例如把数组 [4, 3, 2, 1

    3.8K40

    TS 常见问题整理(60多个,持续更新ing)

    和 undefined 是其它类型(包括 void)子类型,可以赋值给其它类型(如:数字类型),赋值类型会变成 null 或 undefined 默认情况下,编译器会提示错误,这是因为 tsconfig.json...什么是类型接口 如果接口用于一个的话,那么接口会表示“行为抽象” 对约束,让去实现接口,可以实现多个接口 接口只能约束公有成员(实例属性/方法),无法约束私有成员、构造函数、静态属性/...// 获取类型,该类型可以获取上面的静态属性/方法 let greeterTwo:typeof Greeter = Greeter; greeterTwo.message = 'hey';...当一个 ES6 模块引入该模块(import moduleName from 'xxx'),ES6 模块系统默认会自动去该模块中顶层对象上查找 default 属性并将值赋值给 moduleName...当一个 ES6 模块引入该模块(import moduleName from 'xxx'),ES6 模块系统默认会自动去该模块中顶层对象上查找 default 属性并将值赋值给 moduleName

    15.3K76

    SpringMVC基础

    当⽤⼾访问⼀个URL,将⽤⼾请求对应到程序中某个某个⽅法过程就叫路由映射 @RequestMapping即可修饰,也可以修饰⽅法: @RequestMapping标识⼀个:设置映射请求请求路径初始信息...@RequestMapping标识⼀个⽅法:设置映射请求请求路径具体信息 当修饰和⽅法,访问地址是路径+⽅法路径 注意: @RequestMapping URL路径也可以是多层路径 @RequestMapping...,如果某个属性未传递,则赋值null(基本类型则赋值为默认初识值,⽐如int类型属性,会被赋值为0) 传递数组和集合 SpringMVC可以⾃动绑定数组参数赋值 @RequestMapping("...中变量名称⼀致,可以简写,不⽤给@PathVariable属性赋值,否则需要@PathVariable属性value赋值 @RequestPart 上传⽂件使用@RequestPart 注解 @...) { return "session:"+session.getAttribute("test"); } 获取Header 获取Header也是 HttpServletRequest 中获取

    21040

    学会6大类型JavaScript面试题,面试官都不淡定了

    1、原型和原型链当我们找实例对象属性,如果找不到,就会查找与对象关联原型中去找,如果还找不到,就去找原型原型,直到最顶层。...a//执行async1(),当执行到 const res = await async2(),await先让后面的表达式先执行,也就是async2()//打印c//然后将其后面的代码放到微任务队列中...functhis指向obj//接着执行setTimeout,1s执行wrapper//在上面的一秒内,重新赋值obj = {num:130},这并不会影响到已经绑定了 obj wrapper 函数...4、预解析变量是只声明,不赋值,默认为undefined。 5、==函数重名,后者会覆盖前者。 == 6、==变量重名,不会重新声明,但是执行代码时候会重新赋值。...//4、接着创建 cls 对象,同样会调用父 cls 构造函数,执行父 show 方法,输出 “yoo”我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

    15310

    JavaScript快速入门

    和undefined null空 undefined未定义 数组 JS中可以是一系列不同类型对象 var arr = [1,2,3,'hello',null,true] 长度 arr.length...属性名:属性值 } 键值对描述属性xxx :xxx,多个属性之间使用都逗号隔开,最后一个属性不加逗号 对象赋值 person.name = “qin” 使用一个不存在对象属性不会报错...: 当事件发生(当用户点击按钮) 当 JavaScript 代码调用时 自动(自调用) 当 JavaScript 到达 return 语句,函数将停止执行。...console.log(a); // a=>99, 此时是全局变量a function f() { console.log(a); // 当前a变量是下面变量a声明提升...":"ymm","age":3,"sex":"man"}'); 面向对象编程,与其他语言区别 :模板 对象:具体实例 可以说是对象抽象,对象是具体实现,也可以想为,女生是一个,你女朋友是这个大类中具体一员

    68620

    干货|Kotlin入门第一课:对比Java开始

    +设置+获取+toString(),一个数据基本功能就有了,三个属性写了三十几行代码。...如果类声明不加data,只会打印出一串数字(应该是内存地址),而不是当前对象属性信息。...解释完变量定义关于空概念,接下来就该看看这种保护机制能否真的让我们省心。就拿获取字串长度为例,Kotlin中String有个length属性,即调用方式为strObject.length。...有两种形式定义变量不用担心(1 类型为String且不允许为null;2 中不包含length属性), 理由很简单,前者不会出现null异常,后者获取length属性在编译阶段就会出错,或者说在敲完代码编译器就会标红提示了...第2-3行是设置文本两种方式,Kotlin建议用更简洁第二种.text,这也是文章开头定义数据属性采用默认访问修饰原因,因为private属性就不能直接通过”.”直接获取了。

    1K110

    灵魂拷问:你真的理解System.out.println()打印原理吗?

    在百度百科上,有对System做了这样说明:System代表系统,其中系统级很多属性和控制方法都放置在该类内部。...因此,若需调用这些带static定义属性或者方法,无需创建对象就能直接通过“名.成员名”来调用。...作为static定义out引用变量,它在加载就被初始化了,初始化,会创建PrintStream对象对out赋值,之后便能调用PrintStream中定义方法。...(props); 6 7 //系统属性获取系统相关换行符,赋值给变量lineSeparator 8 lineSeparator = props.getProperty("line.separator...out被赋值对象地址,就可以调用PrintStream中各种public修饰方法里,其中就包括println()、print()这类打印信息方法,通过out.println(“xxxx”)即可将

    2.2K30

    实时即未来,车联网项目之远程诊断实时故障分析【七】

    online_data 分为三: 实时上报车辆数据; 静态车辆车型车系等数据; 通过经纬度获取国家、省市区、地址等信息。...geohash //1.2.根据geohash redis中获取value值(geohash在redis中是作为主键存在) //1.3.如果查询出来值不为空,将其通过JSON对象转换成 VehicleLocationModel...对象,否则置为 null //1.4.如果当前对象不为空,将国家,省市区地址赋值给 itcastDataPartObj,否则置为 null //1.5.返回数据 对在redis获取失败经纬度使用异步...close方法 //3.重写timeout方法 //3.1.打印输出超时 //4.重写asyncInvoke方法 //4.1.获取当前车辆经纬度 //4.2.通过GaoDeMapUtils工具根据参数获取请求...转换成string字符串 //因为返回json,需要使用JSON转换成JSONObject对象 //通过regeocode获取JSON对象,然后解析对象封装国家,省市区,地址 //封装成 VehicleLocationModel

    1.1K10
    领券