2013-06-20 28 views
0

第一个程序读取JSON数据的多个嵌套数组

package bll.sap; 

import java.net.MalformedURLException; 

import utility.PropertyUtility; 

public class GetActiveData 
{ 
    public static void main(String[] args) { 

     String sapURL = ""; 
     String transactionSapURL=""; 
     try { 


      sapURL = PropertyUtility.getSapURL(); 
      transactionSapURL = PropertyUtility.getTransactionSapURL(); 

      //Get Summary Data 
      //SapDataSync sapDataSync = new SapDataSync(); 
      SapDataSync sapDataSync = new SapDataSync(); 

      //sapDataSync.readTransactionJsonFromUrl(sapURL+"E13F42EC5E38"); 
      sapDataSync.readTransactionJsonFromUrl("http://localhost/uatpw/ActiveTransaction?isx=E13F5AFA45CE"); 


      } 
     catch(MalformedURLException me) 
     { 
      me.printStackTrace(); 
     } 
     catch (Exception e) 
     { 
       e.printStackTrace(); 
     } 
    } 

} 

第二方案

package bll.sap; 


import java.io.BufferedInputStream; 
import java.io.BufferedReader; 
import java.io.DataInputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.net.MalformedURLException; 
import java.net.URL; 
import java.nio.charset.Charset; 
import java.util.ArrayList; 
import java.util.Date; 
import java.util.List; 

import net.sf.json.JSONArray; 
import net.sf.json.JSONException; 
import net.sf.json.JSONObject; 
import utility.Utility; 

import com.google.code.morphia.Datastore; 
import com.sun.jndi.toolkit.url.Uri; 

import dal.GetMorphiaDB; 

    public class SapDataSync 
    { 

     private void saveSapTransaction(List<TransactionUnit> sapTransaction){ 
      GetMorphiaDB morphia; 
      try { 
       morphia = GetMorphiaDB.getInstance(); 
       Datastore ds = morphia.getDs(); 
       ds.save(sapTransaction); 
      }catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 

     private void createSapTransaction(String transactionJson) 
     { 
      JSONObject jsonObj = JSONObject.fromObject(transactionJson); 

      JSONArray transactionUnits = jsonObj.getJSONArray("TRANSACTION"); 

      //System.out.println("transactionUnits="+transactionUnits); 

      List<ActiveUnit> transactionList = new ArrayList<ActiveUnit>(); 

      for(int i = 0; i < transactionUnits.size() ; i++) 
      { 
       JSONObject jsn = transactionUnits.getJSONObject(i); 


       ActiveUnit transactionUnit = new ActiveUnit 
       (
         jsn.getString("listEditions"), 
         jsn.getString("listPackage"), 
         jsn.getString("referenceID") 

       ); 



       //System.out.println("transactionUnit ="+transactionUnit); 
       transactionList.add(transactionUnit); 
       //System.out.println("transactionList ="+transactionList); 
      } 

      //System.out.println(transactionList.size()); 
      if (transactionList.size() > 0) { 
       //saveSapTransaction(transactionList); 
      } 

     } 

     public void readTransactionJsonFromUrl(String url) throws IOException, JSONException 
     { 

      InputStream is = new URL(url).openStream(); 
      try 
      { 
       BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8"))); 
       StringBuilder sb = new StringBuilder(); 
       int cp; 
       while ((cp = rd.read()) != -1) 
       { 
       sb.append((char) cp); 

       } 


       createSapTransaction(sb.toString()); 
      } 
      finally 
      { 
       is.close(); 
      } 
     } 



    } 

第三方案

package bll.sap; 

import java.io.Serializable; 
import java.util.Date; 
import java.util.List; 

import org.bson.types.ObjectId; 

import com.google.code.morphia.annotations.Entity; 
import com.google.code.morphia.annotations.Id; 

@Entity("SapTransaction") 
public class ActiveUnit implements Serializable { 

    private static final long serialVersionUID = 1L; 

    @Id 
    private String listEditions; 
    private String listPackage; 
    private String referenceID; 
    private List<ActiveUnit> listEdition; 
    public ActiveUnit() { 
    } 
    public ActiveUnit(String listEdtions, String listPackage,String referenceID) { 
     this.listEditions = listEdtions; 
     this.listPackage = listPackage; 
     this.referenceID = referenceID; 

    } 

    public String getreferenceID() { 
     return referenceID; 
    } 

    public void setreferenceID(String referenceID) { 
     this.referenceID = referenceID; 
    } 

    public String getListEditions() { 
     return listEditions; 
    } 

    public void setListEditions(String listEditions) { 
     this.listEditions = listEditions; 
    } 

    public String getListPackage() { 
     return listPackage; 
    } 

    public void setListPackage(String listPackage) { 
     this.listPackage = listPackage; 
    } 


    @Override 
    public String toString() 
    { 
     String unit = "{ " +"listEditions: " + this.listEditions+ 
          ",listPackage: "+ this.listPackage+ 
          ",referenceID: " + this.referenceID+ 
         "}"; 
     return unit; 
    } 
} 

AFTER如下所示,从该网址以JSON格式显示。

{ 
"TRANSACTION":[ 
{ 
"listEditions": [ 
{ 
"adRoute":"B", 
"listInsertion":[ 
    { 
     "color":0,"colorType":"All Colour","fromDate":"26/06/2013","height":25,"page":2,"pagePosition":2,"pagePositionType":"Regular Page","size":823,"sizeDimention":"32.9x25","toDate":"26/06/2013","width":32.9,"pubDate":"" 
    } 
    ] 
}, 
{ 
"adRoute":"A", 
"listInsertion":[ 
    { "color":0,"colorType":"All Colour","fromDate":"26/06/2013","height":25,"page":2,"pagePosition":2,"pagePositionType":"Regular   Page","size":823,"sizeDimention":"32.9x25","toDate":"26/06/2013","width":32.9,"pubDate":"" 
    } 
    ] 
}, 

{ 
"adRoute":"A", 
"listInsertion":[ 
    { "color":0,"colorType":"All Colour","fromDate":"26/06/2013","height":25,"page":2,"pagePosition":2,"pagePositionType":"Regular   Page","size":823,"sizeDimention":"32.9x25","toDate":"26/06/2013","width":32.9,"pubDate":"" 
    } 
    ] 
}, 
{ 
"adRoute":"A", 
"listInsertion":[ 
    { "color":0,"colorType":"All Colour","fromDate":"26/06/2013","height":25,"page":2,"pagePosition":2,"pagePositionType":"Regular   Page","size":823,"sizeDimention":"32.9x25","toDate":"26/06/2013","width":32.9,"pubDate":"" 
    } 
    ] 
}, 
{ 
"adRoute":"A", 
"listInsertion":[ 
    { "color":0,"colorType":"All Colour","fromDate":"26/06/2013","height":25,"page":2,"pagePosition":2,"pagePositionType":"Regular   Page","size":823,"sizeDimention":"32.9x25","toDate":"26/06/2013","width":32.9,"pubDate":"" 
    } 
    ] 
}, 
{ 
"adRoute":"A", 
"listInsertion":[ 
    { "color":0,"colorType":"All Colour","fromDate":"26/06/2013","height":25,"page":2,"pagePosition":2,"pagePositionType":"Regular   Page","size":823,"sizeDimention":"32.9x25","toDate":"26/06/2013","width":32.9,"pubDate":"" 
    } 
    ] 
} 
], 

listPackage: 
[ 
{ 

listEditions: [ 
{ 
"adRoute":"B", 
"listInsertion":[ 
    { 
     "color":0,"colorType":"All Colour","fromDate":"26/06/2013","height":25,"page":2,"pagePosition":2,"pagePositionType":"Regular Page","size":823,"sizeDimention":"32.9x25","toDate":"26/06/2013","width":32.9,"pubDate":"" 
    } 
    ] 
}, 
{ 
"adRoute":"A", 
"listInsertion":[ 
    { "color":0,"colorType":"All Colour","fromDate":"26/06/2013","height":25,"page":2,"pagePosition":2,"pagePositionType":"Regular   Page","size":823,"sizeDimention":"32.9x25","toDate":"26/06/2013","width":32.9,"pubDate":"" 
    } 
    ] 
}, 

{ 
"adRoute":"A", 
"listInsertion":[ 
    { "color":0,"colorType":"All Colour","fromDate":"26/06/2013","height":25,"page":2,"pagePosition":2,"pagePositionType":"Regular   Page","size":823,"sizeDimention":"32.9x25","toDate":"26/06/2013","width":32.9,"pubDate":"" 
    } 
    ] 
}, 
{ 
"adRoute":"A", 
"listInsertion":[ 
    { "color":0,"colorType":"All Colour","fromDate":"26/06/2013","height":25,"page":2,"pagePosition":2,"pagePositionType":"Regular   Page","size":823,"sizeDimention":"32.9x25","toDate":"26/06/2013","width":32.9,"pubDate":"" 
    } 
    ] 
}, 
{ 
"adRoute":"A", 
"listInsertion":[ 
    { "color":0,"colorType":"All Colour","fromDate":"26/06/2013","height":25,"page":2,"pagePosition":2,"pagePositionType":"Regular   Page","size":823,"sizeDimention":"32.9x25","toDate":"26/06/2013","width":32.9,"pubDate":"" 
    } 
    ] 
}, 
{ 
"adRoute":"A", 
"listInsertion":[ 
    { "color":0,"colorType":"All Colour","fromDate":"26/06/2013","height":25,"page":2,"pagePosition":2,"pagePositionType":"Regular   Page","size":823,"sizeDimention":"32.9x25","toDate":"26/06/2013","width":32.9,"pubDate":"" 
    } 
    ] 
} 
] 
}], 

"referenceID": "E13F42EC5E38" 
} 
] 
} 

现在的问题是如何从内部数组里面的JSON数据读取所有的键和值。 我可以从该TRANSACTION数组中读取数据。 但进一步如果我想从listEditions数组和listEditions数组中的数组listInsertion中读取数据,那么它会为我创建问题。然而,我尝试了一些方法,但在静脉。 请帮忙。 当前代码仅用于从TRANSACTION数组中读取数据。 我没有得到如何编码从其他阵列读取数据。 我试着读它,但它说它不是一个数组,它是一个字符串。

回答

0

如果您有一个可以使用JSON字符串构建的支持对象模型,您可以使用google的Gson API,它将无缝地解析JSON字符串并为您创建对象。

+0

我没有得到你。 – yatinbc

+0

https://sites.google.com/site/gson/gson-user-guide#TOC-Goals-for-Gson –