【问题标题】:How to retrieve the values from json如何从json中检索值
【发布时间】:2014-09-30 05:40:47
【问题描述】:

我正在将 xml 消息转换为 json 对象,我想从 json 对象中读取所有值,如何读取所有值 Example-pfirstname="Anssi";像这样我想读取 json 格式字符串中的所有值。 我正在使用jsonobject进行转换

JSONObject xmlJSONObj = XML.toJSONObject(xml1);

{
"event": {
    "eventpermits": {
        "eventpermit": {
            "pfirstname": "Anssi",
            "pmodifydate": {
                "minute": 20,
                "second": 40,
                "month": 6,
                "year": 2012,
                "hour": 11,
                "day": 21
            },
            "pplates": "ABC123",
            "genddate": {
                "minute": 59,
                "second": 59,
                "month": 12,
                "year": 9999,
                "hour": 23,
                "day": 31
            },
            "gname": "Visy",
            "permitreason": 2,
            "penddate": {
                "minute": 0,
                "second": 0,
                "month": 6,
                "year": 2012,
                "hour": 17,
                "day": 21
            },
            "accesscheckdate": {
                "minute": 20,
                "second": 45,
                "month": 6,
                "year": 2012,
                "hour": 11,
                "day": 21
            },
            "pstartdate": {
                "minute": 0,
                "second": 0,
                "month": 6,
                "year": 2012,
                "hour": 12,
                "day": 20
            },
            "id": 13,
            "selected": 1,
            "plastname": "Huttunen",
            "gstartdate": {
                "minute": 0,
                "second": 59,
                "month": 6,
                "year": 2012,
                "hour": 0,
                "day": 20
            },
            "points": 1,
            "eventnumber": 4,
            "gaccesslevel": 0,
            "accesscheckid": 17,
            "pid": 4,
            "pcreatorname": "VisyXMLGate",
            "pcpallowed": 1,
            "gcheckpointallowed": 1,
            "gid": 1,
            "pdeletedate": {
                "minute": 0,
                "second": 0,
                "month": 6,
                "year": 2012,
                "hour": 0,
                "day": 21
            },
            "povt": "X2",
            "pcompany": "Visy",
            "pcreationdate": {
                "minute": 19,
                "second": 27,
                "month": 6,
                "year": 2012,
                "hour": 11,
                "day": 21
            }
        }
    },
    "accessdecision": {
        "cppolicy": "OPENFORPERMIT",
        "id": 17,
        "permitreason": 2,
        "date": {
            "minute": 20,
            "second": 45,
            "month": 6,
            "year": 2012,
            "hour": 11,
            "day": 21
        },
        "eventnumber": 4,
        "frontplate": "ABC123"
    },
    "permitreason": 2,
    "checkpoint": {
        "messagedirection": "IN",
        "id": 1,
        "direction": "IN",
        "tag": "IN1",
        "name": "Entrance 1",
        "policy": "OPENFORPERMIT",
        "sourceareaid": 1,
        "targetareaid": 2
    },
    "permitid": 4,
    "frontlicenseplates": {
        "licenseplate": {
            "formatted": "ABC123",
            "nationality": "FIN",
            "unformatted": "",
            "confidence": 1.1
        }
    },
    "date": {
        "minute": 18,
        "second": 29,
        "month": 6,
        "year": 2012,
        "hour": 11,
        "day": 21
    },
    "eventnumber": 4,
    "ovt": "VisyAccessGate"
}
}

【问题讨论】:

  • 你所说的“所有价值观”是什么意思?你想要什么价值观?
  • 这意味着在 eventpermit 下我想像这样读取分钟、小时、秒、月、年。
  • 这是 json 的固定模式/格式吗?或者可能会在时间上有所不同?
  • 不,它是固定格式,不会变化
  • 所以这是 JSON 你想把它转换成 xml 吗?对吗?

标签: java xml json


【解决方案1】:

根据您的 Json 字符串结构,所有格式均使用 JSONObject {} 格式化,并且不包含 JSONArray []

这里是获取pfirstname值的例子,这样,你可以自己尝试其他值。

//firstly get 'event' JSONObject
JSONObject event = xmlJSONObj.getJSONObject("event");

//from 'event' JSONObject, get 'eventpermits' JSONObject as it is enclosing with {}
JSONObject eventpermits = event.getJSONObject("eventpermits");

//to get 'eventpermit' JSONObject
JSONObject eventpermit = eventpermits.getJSONObject("eventpermit");

//to get JSONObject of 'pmodifydate' AND one string value of 'pfirstname'
JSONObject pmodifydate = eventpermit.getJSONObject("pmodifydate");

//string value of 'pfirstname'
String pfirstname = eventpermit.getString("pfirstname");

当你用它的类型访问值时,根据你的JSON字符串结构,你可以使用正确的带字段名的访问器-

  • getString()

  • getBoolean()

  • getInt()、getLong()、getDouble()

见apihere

【讨论】:

  • 我很困惑,你能帮我解决这个问题吗,即,我正在使用 xpath 直接读取 xml 消息并读取值,并且我正在尝试使用 json 因为重量轻的对象所以哪一个是读取值的最佳方法。
  • @Vskiran 我更喜欢将 xml 字符串转换为 JSON 对象然后访问所需值的方式。与xpath 用法相比,它优雅且易于维护代码和准备就绪。或者您可以在新帖子中提出您的困惑!!!!
  • 是的,谢谢@Born 为此,我需要再等 90 分钟才能收到新帖子
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多