JSONObject 枚举值在转换为字符串时为空

JSONObject enum values are empty when converted to string

提问人:user2478236 提问时间:11/17/2023 更新时间:11/17/2023 访问量:47

问:

我正在尝试添加枚举值,如下面的代码所示,当我打印输出或将其转换为字符串时,枚举值为空。如何解决此问题

package com.test;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;

public class TestJson {

public static void main(String[] args) {
    JSONObject json_obj = new JSONObject();
    json_obj.put("name", "paul");

    Map<String,enumObj> a = new HashMap<>();
    a.put("val", enumObj.LOW);

    json_obj.put("json_obj", a);
    System.out.println(json_obj);
}

public enum enumObj{
        LOW,
        MEDIUM,
        HIGH
    }}

输出如下

{“name”:“paul”,“json_obj”:{“val”:{}}}

爪哇岛

评论

0赞 Kostas Nitaf 11/17/2023
您的代码适用于 java17 {“name”:“paul”,“json_obj”:“{val=LOW}”}
0赞 Nick 11/17/2023
我不知道潜在的机制,但我认为你的枚举还不代表任何值。所以程序不知道如何以JSON格式编写它们。我认为这可以解决您的问题:baeldung.com/jackson-serialize-enums
0赞 user2478236 11/17/2023
@KostasNitaf我正在使用 openjdk18
0赞 user2478236 11/17/2023
即使添加值后,它仍然相同的公共枚举 enumObj { LOW(“LOW”), MEDIUM(“MEDIUM”), HIGH(“HIGH”); private String unit; enumObj(String unit) { this.unit = unit; } }
0赞 Kostas Nitaf 11/17/2023
它也适用于 18 岁。:(import org.json.JSONException; import org.json.JSONObject; import java.util.HashMap; import java.util.Map; class TestJson { public static void main(String[] args) throws JSONException { JSONObject json_obj = new JSONObject(); json_obj.put("name", "paul"); Map<String,enumObj> a = new HashMap<>(); a.put("val", enumObj.MEDIUM); json_obj.put("json_obj", a); System.out.println(json_obj); } public enum enumObj{ LOW, MEDIUM, HIGH }}

答:

0赞 Faruk Karaca 11/17/2023 #1

尝试转换为字符串。enum

a.put("val", enumObj.LOW.toString());

评论

0赞 user2478236 11/17/2023
试过这个,输出是一样的{“name”:“paul”,“json_obj”:{“val”:{}}}