2016-11-08 35 views
0

我有API和尝试访问链接:如何设置JSON输入反应为Java对象

server/apps/ProcessRequest?req={"agent_id":"id","proccode":"380000","agent_pass":"pass","req_datetime":"20161108132741","customer_id":"547201743150","product_code":"001002","rrn":"uniquecode"} 

,我的问题是,从上面的链接输入反应,我想设定的输入反应为Java对象,并用它。

我得到这个输入反应:

{ 
"resp_code": "0000", 
"amount": "0", 
"data": { 
    "Status": "0000", 
    "NomorPelanggan": "547", 
    "IDPelanggan": "547", 
    "Unsold": "[]", 
    "Nama": "PLGN LPB., 05134710274", 
    "TeleponUP": "123", 
    "Daya": "2200", 
    "KodeUP": "54720", 
    "MaksimalKWH": "5000", 
    "Tagihan": [ 
     { 
      "Periode": "201611", 
      "Total": 0 
     } 
    ], 
    "NomorMeter": "05134710274", 
    "Tarif": "R3", 
    "TotalTagihan": "0", 
    "ErrorMessage": "", 
    "SessionId": "2016110813321820497", 
    "Nominal": [ 
     20000, 
     50000, 
     100000, 
     200000, 
     500000, 
     1000000, 
     5000000, 
     10000000, 
     50000000 
    ], 
    "KodeDistribusi": "54" 
}, 
"resp_desc": "Successful", 
"proccode": "380000"} 

如何设置这个respons为Java对象?

api不是我自己的,我现在不是pojo的api模型。

回答

0

如果你不确定什么是repsonse json的整个结构。

u能简单地把该响应字符串作为地图(基于ü知道根节点是JSON对象,而不是JSON数组)

通过FASTJSON API这样的:

Map<String, Object> list = JSON.parseObject("...", new TypeReference<Map<String, Object>>() {}); 

的'...'是resposne字符串

+0

谢谢,我解决了这个问题。 –

1

我想你在做的是序列化。如果您知道预先会收到的Json格式,则可以简单地使用Gson来解析Json并从中创建一个Java对象。

假设你有这样的JSON:

{ 
    "type": "Fiat", 
    "model": "500", 
    "colour": "white" 
} 

尝试是这样的:

public class Car { 
    private String type; 
    private String model; 
    private String colour; 
    // Getters and setters. 
} 

public static void main(final String... args) { 
    String json = getTheJsonSomehow(); 
    Gson gson = new Gson(); 
    Car car = gson.fromJson(json, Car.class); 
} 

the documentation

+0

我的问题是json格式可以不同。 –

0

GSON,JSON-简单,杰克逊很少,你可以使用库。但是对于其中的任何一种,您都必须定义一个Java类结构来代表Json,以便进行非编组。

相关问题