热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在Java中解析JSONMap时出现NullPointer异常

如何解决《在Java中解析JSONMap时出现NullPointer异常》经验,为你挑选了1个好方法。

我正在尝试在REST API中从下面的JSON解析productId,名称和价格-但是尝试获取他时我得到了空指针异常name- String name = (String) obj.get("name");,我可以知道我在做什么错吗?

任何帮助将非常感激。谢谢!

JSON:

{
    "id": "af0b86eb-046c-4400-8bc4-0e26042b8f53",
    "products": [{
            "productId": "1234",
            "name": "apple",
            "price": "383939"
        }
    ]
}

Controller.java

public ResponseEntity create(@RequestBody Map obj) {
    Product respOnse= myservice.create(obj);
    return new ResponseEntity(response, HttpStatus.CREATED);
}

Service.java

public Product create(Map obj) { 
    for (Entry entry : obj.entrySet()) {
        System.out.println("Key : " + entry.getKey() + " Value : " + entry.getValue());
    }       

    Object [] products = (Object[]) obj.get("products");
    HashMap  productOne= (HashMap) products[0];
    String productId = (String) productOne.get("name");
    System.out.println("productId: " +productId);

    String name = (String) obj.get("name");
    System.out.println("name: " +name);
}

输出:

Key : products Value : [{productId=1234, name=apple, price=383939}]

Dmitry Bogda.. 5

通过obj.get("name"),您尝试name从json请求的顶层通过键获取值,而这是第二层对象的属性

在伪代码(跳过转换和空检查)中,它应如下所示: obj.get("products")[0].get("name")



1> Dmitry Bogda..:

通过obj.get("name"),您尝试name从json请求的顶层通过键获取值,而这是第二层对象的属性

在伪代码(跳过转换和空检查)中,它应如下所示: obj.get("products")[0].get("name")


推荐阅读
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 本文将带你快速了解 SpringMVC 框架的基本使用方法,通过实现一个简单的 Controller 并在浏览器中访问,展示 SpringMVC 的强大与简便。 ... [详细]
  • HashTable与ConcurrentHashMap均可实现HashMap的功能,对外提供了键值对存储的数据结构。但是在内部结构及实现上有何区别,性能上的差异到底在哪里又是如何导致的 ... [详细]
  • 缓存这个东西就是为了提高运行速度的,由于缓存是在寸土寸金的内存里面,不是在硬盘里面,所以容量是很有限的。LRU这个算法就是把最近一次使用时间离现在时间最远的数据删除掉。先说说List:每 ... [详细]
  • 将学生对象和学生的归属地通过键与值存储到map集合中。importjava.util.HashMap;importjava.util.Iterator;importjava.uti ... [详细]
  • 本文详细介绍了Java反射机制的基本概念、获取Class对象的方法、反射的主要功能及其在实际开发中的应用。通过具体示例,帮助读者更好地理解和使用Java反射。 ... [详细]
  • Flutter 2.* 路由管理详解
    本文详细介绍了 Flutter 2.* 中的路由管理机制,包括路由的基本概念、MaterialPageRoute 的使用、Navigator 的操作方法、路由传值、命名路由及其注册、路由钩子等。 ... [详细]
  • 本文介绍了在 Java 编程中遇到的一个常见错误:对象无法转换为 long 类型,并提供了详细的解决方案。 ... [详细]
  • 在多线程并发环境中,普通变量的操作往往是线程不安全的。本文通过一个简单的例子,展示了如何使用 AtomicInteger 类及其核心的 CAS 无锁算法来保证线程安全。 ... [详细]
  • 属性类 `Properties` 是 `Hashtable` 类的子类,用于存储键值对形式的数据。该类在 Java 中广泛应用于配置文件的读取与写入,支持字符串类型的键和值。通过 `Properties` 类,开发者可以方便地进行配置信息的管理,确保应用程序的灵活性和可维护性。此外,`Properties` 类还提供了加载和保存属性文件的方法,使其在实际开发中具有较高的实用价值。 ... [详细]
  • 本文介绍了如何利用ObjectMapper实现JSON与JavaBean之间的高效转换。ObjectMapper是Jackson库的核心组件,能够便捷地将Java对象序列化为JSON格式,并支持从JSON、XML以及文件等多种数据源反序列化为Java对象。此外,还探讨了在实际应用中如何优化转换性能,以提升系统整体效率。 ... [详细]
  • 转载自:http:www.blogjava.netCarpenterLeearchive20160427430268.html总体介绍之所以把HashSet和HashMa ... [详细]
  • 类Hashtable<K,V>所有已实现的接口:Serializable,Cloneable,Map<K,V>此类实现一个哈希表,该哈希表将键映 ... [详细]
  • 本篇文章给大家分享的是有关Java中怎么对HashMap按键值排序,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话 ... [详细]
  • ***功能:排序*privatestaticvoidoutputRegionStatistics(HashMap<String,Integer>regionMap){ ... [详细]
author-avatar
月光魔术师2702935955
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有