JSONObject.fromObject如何保留是map对象不带双引号
时间: 2024-04-18 21:32:40 浏览: 101
`JSONObject.fromObject()`是`net.sf.json.JSONObject`类的方法,它会将一个对象转换为JSON字符串。默认情况下,转换后的JSON字符串会将键和值都用双引号括起来。
如果你希望保留键和值不带双引号的格式,可以使用`net.sf.json.JsonConfig`类的`setJsonPropertyFilter()`方法来设置一个属性过滤器。下面是示例代码:
```java
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import net.sf.json.util.PropertyFilter;
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<String, Object> map = new HashMap<>();
map.put("key1", "value1");
map.put("key2", "value2");
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setJsonPropertyFilter(new PropertyFilter() {
@Override
public boolean apply(Object source, String name, Object value) {
return false;
}
});
JSONObject jsonObject = JSONObject.fromObject(map, jsonConfig);
String jsonString = jsonObject.toString();
System.out.println(jsonString);
}
}
```
在上述代码中,我们创建了一个`JsonConfig`对象,并设置了一个属性过滤器,该过滤器始终返回`false`,表示所有属性都不会被过滤。然后,我们使用`JSONObject.fromObject()`方法将`map`对象转换为JSON字符串,并传入了配置对象`jsonConfig`。
输出结果如下:
```
{key1:value1,key2:value2}
```
如你所见,转换后的JSON字符串中的键和值都没有双引号括起来。请注意,这种格式不符合标准的JSON规范,因为标准的JSON要求键和值都使用双引号括起来。这种格式可能无法被所有的JSON解析器正确解析。
阅读全文