2015-05-21 103 views
-7

我应该准备什么java类结构来返回这样的JSON?将JSON转换为java对象

修正JSON(上面一个无效):

{ 
    "transactionComparisonTotals": [ 
     [ 
      "CurrentFace", 
      { 
       "value": "1000000", 
       "format": "$000.00 ptr" 
      }, 
      { 
       "value": "1000", 
       "format": "$000.00 ptr" 
      }, 
      { 
       "value": "0", 
       "format": "$000.00 ptr" 
      } 
     ], 
     [ 
      "MarketPrincipal", 
      { 
       "value": "1000000", 
       "format": "$000.00 ptr" 
      }, 
      { 
       "value": "1000", 
       "format": "$000.00 ptr" 
      }, 
      { 
       "value": "0", 
       "format": "$000.00 ptr" 
      } 
     ] 
    ] 
} 

为此,我需要设置的Java类。 Ø

这么一件事我可以做的是产生JSON,如:

{ 
     "transactionComparisonTotals": [ 
      { 
       "key": "coupon", 
       "valueAttributes": [ 
        { 
         "value": 4.25, 
         "format": "00.00%", 
         "color": true, 
         "sign": true 
        }, 
        { 
         "value": 4.26, 
         "format": "$00.00 %", 
         "color": true, 
         "sign": true 
        }, 
        { 
         "value": 0.31, 
         "format": "00.00 bp", 
         "color": true, 
         "sign": true 
        } 
       ] 
      } 
} 

但我真正想要的是有“重点”和“valueAttributes”在短短一个数组没有财产(如所示我原始的JSON)。

+0

JSON的不是一个有效的。 – shruti1810

+0

@JackSparrow调查GSON库来解析儿子,这非常简单。 – StackFlowed

+0

我其实想要返回这样的回应,所以为此我确实需要建立java类层次结构吗? – JackSparrow

回答

2

考虑到这个json文件transaction.json :(你的是无效的,所以我试图纠正它只是为了得到使用gson谷歌API的序列化和deserilization的想法)。

{ 
    "transactionComparisonTotals": [ 
     { 
      "name": "CurrentFace", 
      "info": 
      [ 
       { 
        "value": "1000000", 
        "format": "$000.00 ptr" 
       }, 
       { 
        "value": "1000", 
        "format": "$000.00 ptr" 
       }, 
       { 
        "value": "0", 
        "format": "$000.00 ptr" 
       } 
      ] 
     }, 
     { 
      "name": "MarketPrincipal", 
      "info": 
      [ 
       { 
        "value": "1000000", 
        "format": "$000.00 ptr" 
       }, 
       { 
        "value": "1000", 
        "format": "$000.00 ptr" 
       }, 
       { 
        "value": "0", 
        "format": "$000.00 ptr" 
       } 
      ] 
     } 
    ] 
} 

创建这些类:

数据类:

public class Data{ 
    List<TransactionComparisonTotal> transactionComparisonTotals; 

    public List<TransactionComparisonTotal> getTransactionComparisonTotals() { 
     return transactionComparisonTotals; 
    } 

    public void setTransactionComparisonTotals(
      List<TransactionComparisonTotal> transactionComparisonTotals) { 
     this.transactionComparisonTotals = transactionComparisonTotals; 
    } 

    @Override 
    public String toString() { 
     return transactionComparisonTotals.toString(); 
    } 

} 

TransactionComparisonTotal类:

public class TransactionComparisonTotal{ 
    String name; 
    List<Info> info; 
    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
    public List<Info> getInfo() { 
     return info; 
    } 
    public void setInfo(List<Info> info) { 
     this.info = info; 
    } 
    @Override 
    public String toString() { 
     return "\n"+name+","+info.toString()+"\n"; 
    } 

} 

信息类:

public class Info{ 
    String value; 
    String format; 
    public String getValue() { 
     return value; 
    } 
    public void setValue(String value) { 
     this.value = value; 
    } 
    public String getFormat() { 
     return format; 
    } 
    public void setFormat(String format) { 
     this.format = format; 
    } 
    @Override 
    public String toString() { 
     return value+","+format; 
    } 

} 

这是使用GSON谷歌API

public class Transaction { 
    public static void main(String[] args) throws JsonIOException, JsonSyntaxException, FileNotFoundException { 
     Gson gson = new Gson(); 
     Data data = gson.fromJson(new BufferedReader(new FileReader(
       "transaction.json")), new TypeToken<Data>() { 
     }.getType()); 
     System.out.println(data); 
    } 
} 

输出deserilization的一个简单的例子:

[ 
CurrentFace,[1000000,$000.00 ptr, 1000,$000.00 ptr, 0,$000.00 ptr] 
, 
MarketPrincipal,[1000000,$000.00 ptr, 1000,$000.00 ptr, 0,$000.00 ptr] 
]