如何将 JSON 字符串转换为 GSON 对象?

How do I convert a JSON String into a GSON Object?

我要开发一个网络服务,它的输入应该在 JSON 中描述,我想在我的内部逻辑中将其用作 GSON 对象。因此,无论谁使用网络服务,都会发送一个带有一些信息的请求,如下所示:

{
"glossary": {
    "title": "example glossary",
    "GlossDiv": {
        "title": "S",
        "GlossList": {
            "GlossEntry": {
                "ID": "SGML",
                "SortAs": "SGML",
                "GlossTerm": "Standard Generalized Markup Language",
                "Acronym": "SGML",
                "Abbrev": "ISO 8879:1986",
                "GlossDef": {
                    "para": "A meta-markup language, used to create markup languages such as DocBook.",
                    "GlossSeeAlso": ["GML", "XML"]
                },
                "GlossSee": "markup"
            }
        }
    }
 }
}

我现在需要的是处理它的东西。类似于以下内容:(这只是我想象如何通过以下步骤获得它的示例 运行 ;))

public class AnyClass{

    public AnyClass(String jsonString){
        GSONObject gobject = new GSONObject(jsonString);
        String title = gobject.getValueOf("title");
    }
}

感谢您的帮助:)

您可以使用 javax.json 包来处理 json 数据。有关详细信息,请参阅 https://docs.oracle.com/javaee/7/tutorial/jsonp002.htm

试试这个

JSONParser parser = new JSONParser();
JSONObject json = (JSONObject) parser.parse(jsonString);

使用 gson

Gson gson = new Gson();
gson.fromJson(jsonString, YourBean.class);

将json字符串转换为Gson(反序列化)

使用gson.fromJson();

使用字符串的示例 class

Gson gson = new Gson();
String str = gson.fromJson("\"abc\"", String.class);

使用用户定义的示例 class

BagOfPrimitives obj = new BagOfPrimitives();
Gson gson = new Gson();
BagOfPrimitives obj2 = gson.fromJson(json, BagOfPrimitives.class);

Gson 的 google 帮助页面有很好的解释。

https://sites.google.com/site/gson/gson-user-guide#TOC-Primitives-Examples

对象示例

class BagOfPrimitives {
  private int value1 = 1;
  private String value2 = "abc";
  private transient int value3 = 3;
  BagOfPrimitives() {
    // no-args constructor
  }
}

(序列化)

BagOfPrimitives obj = new BagOfPrimitives();
Gson gson = new Gson();
String json = gson.toJson(obj);  
==> json is {"value1":1,"value2":"abc"}

请注意,您不能序列化具有循环引用的对象,因为这会导致无限递归。

(反序列化)

BagOfPrimitives obj2 = gson.fromJson(json, BagOfPrimitives.class);   
==> obj2 is just like obj

对象更精细

It is perfectly fine (and recommended) to use private fields 
There is no need to use any annotations to indicate a field is to be included for serialization and deserialization. All fields in the current class (and from all super classes) are included by default. 
If a field is marked transient, (by default) it is ignored and not included in the JSON serialization or deserialization.

This implementation handles nulls correctly

While serialization, a null field is skipped from the output

While deserialization, a missing entry in JSON results in setting the corresponding field in the object to null

If a field is synthetic, it is ignored and not included in JSON serialization or deserialization

Fields corresponding to the outer classes in  inner classes, anonymous classes, and local classes are ignored and not included in serialization or deserialization

如果您需要更多示例,请查看以下链接

http://www.mkyong.com/java/how-do-convert-java-object-to-from-json-format-gson-api/

http://filotechnologia.blogspot.it/2013/09/convert-java-object-from-json-gson-api.html