【问题标题】:How to extract JSON String data?如何提取 JSON 字符串数据?
【发布时间】:2014-01-27 19:13:06
【问题描述】:

我有一个独立的 Java 项目中的 JSON 字符串:

{"MsgType":"AB","TID":"1","ItemID":"34532136","TransactTime":1389260033223}

我想从中提取MsgType,即AB

最好的方法是什么?

【问题讨论】:

  • 你用gson试过什么吗?
  • 用gson能做到吗
  • @Swarnajith 是的,它可以用 Gson 完成,我发布了一种方法

标签: java json string gson


【解决方案1】:

我在 android 下使用 JSONObject,但从 Oracle 文档中我看到它也可以在 javax.json 包下使用:

http://docs.oracle.com/javaee/7/api/javax/json/package-summary.html


如果您想要 Gson,那么您的代码应如下所示(抱歉未编译/测试):

/*
{"MsgType":"AB","TID":"1","ItemID":"34532136","TransactTime":1389260033223}
*/

Gson gson = new Gson();

static class Data{
    String MsgType;
    String TID;
    String ItemID;
    int TransactTime;
}

Data data = gson.fromJson(yourJsonString,  Data.class);

【讨论】:

  • +1...将 json 数据反序列化为模型类是一种更好的方法。
【解决方案2】:

我有一个 json-simple 的例子:

JSONParser parser = new JSONParser();
JSONObject jsonObject = (JSONObject) parser.parse(yourString);
String msgType = (String) jsonObject.get("MsgType");

查看this link 获取完整示例。

【讨论】:

  • 我忘记了 JSONParser。谢谢@Suvonkar。
【解决方案3】:

您可以为此使用 Gson 库。

            String json="{MsgType:AB,TID:1,ItemID:34532136,TransactTime:1389260033223}";
            Map jsonJavaRootObject = new Gson().fromJson(json, Map.class);
            System.out.println(jsonJavaRootObject.get("MsgType"));

jsonJavaRootObject 将包含这样的键值映射

{MsgType=AB, TID=1.0, ItemID=3.4532136E7, TransactTime=1.389260033223E12}

【讨论】:

  • @Swarnajith 如果您觉得它有用,请将其标记为答案,这样它也可以帮助其他人。
【解决方案4】:

JsonPath

要解析简单的 JSON,请使用 JsonPath

JsonPath 之于 JSON 就像 XPATH 之于 XML,一种提取给定文档部分的简单方法。

示例代码

String json = "{\"MsgType\":\"AB\",\"TID\":\"1\",\"ItemID\":\"34532136\",\"TransactTime\":1389260033223}";

String author = JsonPath.read(json, "$.MsgType");

System.out.println(author);

结果

AB

依赖

'com.jayway.jsonpath:json-path:0.9.1'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    相关资源
    最近更新 更多