有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

一种奇怪格式的java响应:Ljava。lang.对象@43da8f90

我正在调用一个返回此字符串响应的服务:

{id_richiesta=d877467614e1a80a1bade73d7014c595, risposta={percorsi=[Ljava.lang.Object;@43da8f90, abilitata=1, id_news=-1, monitorata=1}}

这是一种非常奇怪的格式。 我如何解析这个?首先Ljava.lang.Object;@43da8f90;这是此元素的数组:

  1. 字符串id\u percorso
  2. 字符串描述
  3. 线状capolinea

共 (2) 个答案

  1. # 1 楼答案

    什么是Ljava.lang.Object;@43da8f90

    它是类名,后跟at符号,最后是散列码,即对象的散列码。Java中的所有类都直接或间接地继承自对象类。对象类有一些基本方法,如clone()、toString()、equals()、等,。。等等。对象中的默认toString()方法打印“class name @ hash code”.

    解决方案是什么

    您需要重写类中的toString方法,因为它将以可读的格式为您提供有关对象的清晰信息,您可以理解

    覆盖toString的优点是:

    Help the programmer for logging and debugging of Java program

    Since toString is defined in java.lang.Object and does not give valuable information, so it is good practice to override it for subclasses.

  2. # 2 楼答案

    percorsi=[Ljava.lang.Object;@43da8f90

    发生这种情况是因为您正在使用的Object上没有toString()方法。或者,如果是,则使用java.lang.Object提供的默认实现。为了避免这种情况,将数据放在自己的对象中,并覆盖toString()以按自己的方式打印出来