【问题标题】:Why getting Gson MalFormatException为什么得到 Gson MalFormatException
【发布时间】:2020-11-16 13:13:12
【问题描述】:

我有下面的json字符串我想转换为对象

{"Init":{"MOP":[{"Id":"1","Type":"0","ProtocolVersion":"1.0","MopCode":"*NEXB","TerminalId":"P400Plus-275008565","IP":"10.0.0.0:900","Currency":"EUR"},{"Id":"2","Type":"0","ProtocolVersion":"1.0","MopCode":"*NEXF","TerminalId":"P400Plus-275008565","IP":"10.0.0.0:901","Currency":"EUR"}]}}

我的 json 是有效的,我在 here 上尝试过,我也在 here 上创建了 POJO 类,但我得到了 com.google.gson.stream.MalformedJsonException

这是我的代码

    val receiveString = "{"Init":{"MOP":[{"Id":"1","Type":"0","ProtocolVersion":"1.0","MopCode":"*NEXB","TerminalId":"P400Plus-275008565","IP":"10.0.0.0:900","Currency":"EUR"},{"Id":"2","Type":"0","ProtocolVersion":"1.0","MopCode":"*NEXF","TerminalId":"P400Plus-275008565","IP":"10.0.0.0:901","Currency":"EUR"}]}}"
    val root = gson.fromJson(receiveString,TestClass.Root::class.java) //getting error here

这是我的 POJO 类

class Root {
    @JsonProperty("Init")
    var init: Init? = null
}

class MOP {
    @JsonProperty("Id")
    var id: String? = null

    @JsonProperty("Type")
    var type: String? = null

    @JsonProperty("ProtocolVersion")
    var protocolVersion: String? = null

    @JsonProperty("MopCode")
    var mopCode: String? = null

    @JsonProperty("TerminalId")
    var terminalId: String? = null

    @JsonProperty("IP")
    var ip: String? = null

    @JsonProperty("Currency")
    var currency: String? = null
}

class Init {
    @JsonProperty("MOP")
    var mop: List<MOP>? = null
}

你能给我什么建议?

【问题讨论】:

  • 你是在声明 receiveString 而不转义每个 " 吗?
  • @LorenzoZane 是的 json 是有效的

标签: java android json kotlin


【解决方案1】:
字符串中的

doubleQuote (") 必须像 "

一样转义

【讨论】:

  • 你能改正吗,因为在我看来很正常..
  • 将所有 doubleQuote(") 替换为 (\") val receiveString = "{\"Init\":{\"MOP\":[{\"Id\":\"1\" ,\"Type\":\"0\",\"ProtocolVersion\":\"1.0\",\"MopCode\":\"*NEXB\",\"TerminalId\":\"P400Plus-275008565\ ",\"IP\":\"10.0.0.0:900\",\"货币\":\"EUR\"},{\"Id\":\"2\",\"Type\": \"0\",\"ProtocolVersion\":\"1.0\",\"MopCode\":\"*NEXF\",\"TerminalId\":\"P400Plus-275008565\",\"IP\" :\"10.0.0.0:901\",\"货币\":\"EUR\"}]}}"
【解决方案2】:

我通过添加额外的引号来解决我的问题,如下所示

{"Init":{"MOP":[{"Id":"1","Type":"0","ProtocolVersion":"1.0","MopCode":"*NEXB","TerminalId":"'P400Plus-275008565'","IP":"'192.168.1.15'","Currency":"EUR"},{"Id":"2","Type":"0","ProtocolVersion":"1.0","MopCode":"*NEXF","TerminalId":"'P400Plus-275008565'","IP":"'10.0.0.0:901'","Currency":"EUR"}]}}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-27
    • 2018-12-17
    • 2019-12-27
    • 2021-08-04
    • 2019-03-28
    • 2021-03-05
    • 2021-08-27
    相关资源
    最近更新 更多