Java对象转换为JSONObject

3
我将尝试创建一个toJSONObject()方法,该方法返回一个JSONObject,其中包含一些对象数据作为JSONObject!以下是我想调用的方法:
public JSONObject(java.lang.Object object, java.lang.String[] names)

说明:

object - 一个拥有应用于创建 JSONObject 的字段的对象。
names - 字符串数组,从中获取字段名称。

然而,Eclipse 并不承认这个特定的构造函数调用是有效的,尽管有在线文档支持它。

我该如何让它为我工作呢?


也许 json-simple 可以帮助你解决问题。 - Ajinkya
1
你看过GSON吗?http://code.google.com/p/google-gson/ - Guillaume Polet
使用像 Jackson 这样的优秀库。 - duffymo
对我来说,JSONObject库的版本似乎有错误。 - Kartoch
1
你正在尝试使用的构造函数在Android中不受支持。您可以尝试使用其他建议或尝试以不同的方式实现它。这是JSONObject的Android文档:http://developer.android.com/reference/org/json/JSONObject.html - Aldryd
4个回答

1

你有两个选择,

a. 如果你想坚持使用标准的 org.gson 库,你可以自己编写

public static MyObject fromJson(String json)
public String toJson()

每个模型对象都需要实现方法。每个方法的实现必须使用org.json库来填充对象的字段,并分别从对象的字段构建JSON。

b. 使用GSON或jackson进行对象绑定。GSON更简单,jackson更快。

https://sites.google.com/site/gson/gson-user-guide

实际上,我对这三个库进行了性能评估,结果是1. org.json、jackson和gson,其中gson的速度大约慢了10倍。然而,比较org.json并不公平,因为它不包括对象绑定代码。

如果你有一个简单的扁平模型对象,直接映射到JSON,它们都非常简单。如果你想要自定义映射或者有复杂的结构,你需要阅读文档并编写一些自定义序列化/反序列化代码。


1

如之前所建议,请尝试使用 Jackson。它不仅更快,而且从/到JSON的POJO转换节省了时间和额外的编码。

GSON也不错,但不幸的是,我注意到您正在进行Android开发,HTC为我们搞砸了这个,所以如果你决定使用GSON,请记得用jarjar打包库


0

要在Java中具有JSON的功能,您必须拥有JSON-lib。 JSON-lib还需要以下“JAR”文件:

commons-lang.jar 
commons-beanutils.jar
commons-collections.jar
commons-logging.jar
ezmorph.jar
json-lib-2.2.2-jdk15.jar

JSON-lib 是一个用于将 beans、collections、maps、Java 数组和 XML 转换为 JSON,然后再重新转换回 beans、collections、maps 和其他对象的 Java 库。

在本例中,我们将使用 JSONObject 类来创建一个 JSONObject 对象,并打印这些对象的值。要使用 JSONObject 类,我们必须导入以下包: "net.sf.json"。为了向此对象添加元素,我们使用了 put() 方法。以下是 FirstJSONJava.java 的完整示例代码:

import net.sf.json.JSONObject;

public class FirstJSONJava
{
        public static void main(String args[]) {
        JSONObject object=new JSONObject();
        object.put("name","Amit Kumar");
        object.put("Max.Marks",new Integer(100));
        object.put("Min.Marks",new Double(40));
        object.put("Scored",new Double(66.67));
        object.put("nickname","Amit");
        System.out.println(object);
    }
}  

要运行此示例,您必须按照以下几个步骤进行操作:
1.下载JSON-lib jar和其他支持的Jars 2.将这些jar添加到您的类路径中 3.创建并保存FirstJSONJava.java 4.编译并执行它
源代码http://www.roseindia.net/tutorials/json/FirstJSONJava.zip http://www.roseindia.net/tutorials/json/jsonobject-java-example.shtml

0
new org.json.JSONObject (
  object.get(
    "subObject").
  toString());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接