2016-04-15 15 views
5

मैं गतिविधि ए से गतिविधि बी से एक जेसन सरणी पास कर रहा हूं। फिर मैं सरणी में मान डालने के लिए जीएसओएन लाइब्रेरी का उपयोग कर रहा हूं। यह मेरा वर्तमान कोड है।जीएसओ सरणी को जेसन ऑब्जेक्ट में जेसन ऑब्जेक्ट में एंड्रॉइड में कनवर्ट करना?

public void gsonResponse(String json) { 
    try { 
     JSONObject jsonObject = new JSONObject(json); 
     JSONArray jsonArray = jsonObject.getJSONArray("result"); 
     for (int i = 0; i < jsonArray.length(); i++) { 
      LinkedHashMap<String, String> linkedHashMap = new LinkedHashMap<>(); 
      JSONObject innerJosonObject = new JSONObject(jsonArray.getString(i)); 

      // you need to put all values from jsonObject to map for managing the order.. 

      linkedHashMap.put("doc_no", textViewInvNo.getText().toString()); 
      linkedHashMap.put("itembarcode", innerJosonObject.getString("itembarcode")); 
      linkedHashMap.put("net_wt", innerJosonObject.getString("net_wt")); 
      linkedHashMap.put("gross_wt", innerJosonObject.getString("gross_wt")); 
      linkedHashMap.put("stone_wt", innerJosonObject.getString("stone_wt")); 
      linkedHashMap.put("stone_amt", innerJosonObject.getString("stone_amt")); 
      linkedHashMap.put("rate", innerJosonObject.getString("rate")); 
      linkedHashMap.put("making", innerJosonObject.getString("making")); 
      linkedHashMap.put("qty", innerJosonObject.getString("qty")); 
      linkedHashMap.put("net_rate", innerJosonObject.getString("net_rate")); 
      linkedHashMap.put("item_total", innerJosonObject.getString("item_total")); 
      linkedHashMap.put("sum_total", innerJosonObject.getString("sum_total")); 
      Gson gson = new Gson(); 
      // convert linkedHashMap to json string and it will keep the insertion order.. 
      String string = gson.toJson(linkedHashMap, LinkedHashMap.class); 
      jsonArray.put(i, string); 
     } 
     jsonObject.put("result", jsonArray); 
     String jsonResp = jsonObject.toString(); 
     jsonFormattedString = jsonResp.replaceAll("\\\\",""); 
     Log.d("NEW JSON", jsonFormattedString); 

    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
} 

इस के लिए उत्पादन होता है: -

{"result":["{"doc_no":"ES101","itembarcode":"BRMS","net_wt":"10","gross_wt":"1","stone_wt":"0","stone_amt":"0","rate":"32000","making":"100","qty":"1","net_rate":"32100.0","item_total":"32100.0","sum_total":"64600.0"}", 
"{"doc_no":"ES101","itembarcode":"MSAA0015","net_wt":"10","gross_wt":"11","stone_wt":"100000","stone_amt":"1","rate":"32000","making":"500","qty":"1","net_rate":"32500.0","item_total":"32500.0","sum_total":"64600.0"}"]} 

लेकिन मेरी वांछित आउटपुट की तरह कुछ किया जाना चाहिए: -

[{"doc_no":"IN1001","itembarcode":"BRMS123456\nFLT22K","net_wt":"10","gross_wt":"10","stone_amt":"0","rate":"29000","making":"999","qty":"1","net_rate":"29999.0","item_total":"29999.0","sum_total":"30299.0","stone_wt":"0"}, 
{"doc_no":"IN1001","itembarcode":"BRMS\nGA24K","net_wt":"10","gross_wt":"1","stone_amt":"0","rate":"32000","making":"100","qty":"1","net_rate":"","item_total":"","sum_total":"30299.0","stone_wt":""}] 

मैं इसे कैसे हासिल कर सकते हैं? किसी भी सुझाव या मदद की सराहना की है। धन्यवाद।

उत्तर

4
असल

आप निम्न पंक्ति की जरूरत नहीं है:

jsonObject.put("result", jsonArray); 

बस मौजूदा jsonArray का उपयोग निम्न की तरह करें:

String jsonResp = jsonArray.toString(); 

एक अन्य नोट। आपको आपकी प्रतिक्रिया में अतिरिक्त "" मिलेगा और यह jsonArray.put (i, string) के कारण है; फॉर लूप में स्टेटमेंट जो अतिरिक्त "" प्रविष्ट करता है। आप इसे ठीक करने के लिए निम्नलिखित का उपयोग कर सकते हैं:

jsonResp = jsonResp.replaceAll("\"[{]", "{"); 
    jsonResp = jsonResp.replaceAll("[}]\"", "}"); 
+0

अरे यह आसान है और मुझे लगता है मैं अतिरिक्त quotes.How मिलता है सकते हैं केवल एक समस्या यह काम करने के लिए लगता है उनसे छुटकारा पाएं। [ "{" Doc_no ":" IN1002 "," itembarcode ":" BRMS "," net_wt ":" 10 "," gross_wt ":" 1 "," stone_wt ":" 0 "," stone_amt ":" 0 " "दर": "32000", "बनाने": "100", "मात्रा": "1", "net_rate": "32100.0", "ITEM_TOTAL": "32100.0", "sum_total": "64600.0"} " , "{" doc_no ":" IN1002 "," itembarcode ":" MSAA0015 "," net_wt ":" 10 "," gross_wt ":" 11 "," stone_wt ":" 100000 "," stone_amt ":" 1 "" दर ":" 32000 "," बनाने ":" 500 "," मात्रा ":" 1 "," net_rate ":" 32500.0 "," ITEM_TOTAL ":" 32500.0 "," sum_total ":" 64600.0 "} "] –

+0

लेकिन सरणी का आकार बदलता रहता है। यह हमेशा 2 नहीं होगा। –

+0

यह इस आउटपुट ["" doc_no ":" IN1002 "," itembarcode ":" BRMS "," net_wt ":" 10 "," gross_wt ":" 1 "," stone_wt ":" 0 "," stone_amt " : "0", "दर": "32000", "बनाने": "100", "मात्रा": "1", "net_rate": "32100.0", "ITEM_TOTAL": "32100.0", "sum_total": " 64600.0 "", "" doc_no ":" IN1002 "," itembarcode ":" MSAA0015 "," net_wt ":" 10 "," gross_wt ":" 11 "," stone_wt ":" 100000 "" stone_amt ":" 1 "," दर ":" 32000 "," बनाने ":" 500 "," मात्रा ":" 1 "," net_rate ":" 32500.0 "," ITEM_TOTAL ":" 32500.0 "," sum_total ":" 64600.0 " "] –

0

यह DocInfoModel.java की तरह एक मॉडल बनाओ ->

public class DocInfoModel { 

     @SerializedName("doc_no") 
     @Expose 
     private String docNo; 
     @SerializedName("itembarcode") 
     @Expose 
     private String itembarcode; 
     @SerializedName("net_wt") 
     @Expose 
     private String netWt; 
     @SerializedName("gross_wt") 
     @Expose 
     private String grossWt; 
     @SerializedName("stone_amt") 
     @Expose 
     private String stoneAmt; 
     @SerializedName("rate") 
     @Expose 
     private String rate; 
     @SerializedName("making") 
     @Expose 
     private String making; 
     @SerializedName("qty") 
     @Expose 
     private String qty; 
     @SerializedName("net_rate") 
     @Expose 
     private String netRate; 
     @SerializedName("item_total") 
     @Expose 
     private String itemTotal; 
     @SerializedName("sum_total") 
     @Expose 
     private String sumTotal; 
     @SerializedName("stone_wt") 
     @Expose 
     private String stoneWt; 

     /** 
     * 
     * @return 
     * The docNo 
     */ 
     public String getDocNo() { 
      return docNo; 
     } 

     /** 
     * 
     * @param docNo 
     * The doc_no 
     */ 
     public void setDocNo(String docNo) { 
      this.docNo = docNo; 
     } 

     /** 
     * 
     * @return 
     * The itembarcode 
     */ 
     public String getItembarcode() { 
      return itembarcode; 
     } 

     /** 
     * 
     * @param itembarcode 
     * The itembarcode 
     */ 
     public void setItembarcode(String itembarcode) { 
      this.itembarcode = itembarcode; 
     } 

     /** 
     * 
     * @return 
     * The netWt 
     */ 
     public String getNetWt() { 
      return netWt; 
     } 

     /** 
     * 
     * @param netWt 
     * The net_wt 
     */ 
     public void setNetWt(String netWt) { 
      this.netWt = netWt; 
     } 

     /** 
     * 
     * @return 
     * The grossWt 
     */ 
     public String getGrossWt() { 
      return grossWt; 
     } 

     /** 
     * 
     * @param grossWt 
     * The gross_wt 
     */ 
     public void setGrossWt(String grossWt) { 
      this.grossWt = grossWt; 
     } 

     /** 
     * 
     * @return 
     * The stoneAmt 
     */ 
     public String getStoneAmt() { 
      return stoneAmt; 
     } 

     /** 
     * 
     * @param stoneAmt 
     * The stone_amt 
     */ 
     public void setStoneAmt(String stoneAmt) { 
      this.stoneAmt = stoneAmt; 
     } 

     /** 
     * 
     * @return 
     * The rate 
     */ 
     public String getRate() { 
      return rate; 
     } 

     /** 
     * 
     * @param rate 
     * The rate 
     */ 
     public void setRate(String rate) { 
      this.rate = rate; 
     } 

     /** 
     * 
     * @return 
     * The making 
     */ 
     public String getMaking() { 
      return making; 
     } 

     /** 
     * 
     * @param making 
     * The making 
     */ 
     public void setMaking(String making) { 
      this.making = making; 
     } 

     /** 
     * 
     * @return 
     * The qty 
     */ 
     public String getQty() { 
      return qty; 
     } 

     /** 
     * 
     * @param qty 
     * The qty 
     */ 
     public void setQty(String qty) { 
      this.qty = qty; 
     } 

     /** 
     * 
     * @return 
     * The netRate 
     */ 
     public String getNetRate() { 
      return netRate; 
     } 

     /** 
     * 
     * @param netRate 
     * The net_rate 
     */ 
     public void setNetRate(String netRate) { 
      this.netRate = netRate; 
     } 

     /** 
     * 
     * @return 
     * The itemTotal 
     */ 
     public String getItemTotal() { 
      return itemTotal; 
     } 

     /** 
     * 
     * @param itemTotal 
     * The item_total 
     */ 
     public void setItemTotal(String itemTotal) { 
      this.itemTotal = itemTotal; 
     } 

     /** 
     * 
     * @return 
     * The sumTotal 
     */ 
     public String getSumTotal() { 
      return sumTotal; 
     } 

     /** 
     * 
     * @param sumTotal 
     * The sum_total 
     */ 
     public void setSumTotal(String sumTotal) { 
      this.sumTotal = sumTotal; 
     } 

     /** 
     * 
     * @return 
     * The stoneWt 
     */ 
     public String getStoneWt() { 
      return stoneWt; 
     } 

     /** 
     * 
     * @param stoneWt 
     * The stone_wt 
     */ 
     public void setStoneWt(String stoneWt) { 
      this.stoneWt = stoneWt; 
     } 

    } 

और GSON द्वारा json पार्स ->

Gson gson = new Gson(); 
DocInfoModel[] docModel = gson.fromJson(RESPONSE_STRING,DocInfoModel[].class); 
0

मैं आपके जीएसओएन कार्यान्वयन के लिए मॉडल क्लास बनाने का सुझाव दूंगा।

इस समाधान को देखें।

private void testDoc() 
    { 
     String json = "{\"result\":[{\"doc_no\":\"ES101\",\"itembarcode\":\"BRMS\",\"net_wt\":\"10\",\"gross_wt\":\"1\",\"stone_wt\":\"0\",\"stone_amt\":\"0\",\"rate\":\"32000\",\"making\":\"100\",\"qty\":\"1\",\"net_rate\":\"32100.0\",\"item_total\":\"32100.0\",\"sum_total\":\"64600.0\"},{\"doc_no\":\"ES101\",\"itembarcode\":\"MSAA0015\",\"net_wt\":\"10\",\"gross_wt\":\"11\",\"stone_wt\":\"100000\",\"stone_amt\":\"1\",\"rate\":\"32000\",\"making\":\"500\",\"qty\":\"1\",\"net_rate\":\"32500.0\",\"item_total\":\"32500.0\",\"sum_total\":\"64600.0\"}]}"; 
     Gson gson = new Gson(); 
     DocInfo docInfo = gson.fromJson(json, DocInfo.class); 

     System.out.println("Before ***********************"); 
     System.out.println(gson.toJson(docInfo)); 

     for(Result result : docInfo.getResult()) 
     { 
      result.setDocNo("New Doc No"); 
     } 

     System.out.println("After ***********************"); 
     System.out.println(gson.toJson(docInfo)); 
    } 

DocInfo.java

import java.util.ArrayList; 
import java.util.List; 
import com.google.gson.annotations.Expose; 
import com.google.gson.annotations.SerializedName; 

public class DocInfo { 

    @SerializedName("result") 
    @Expose 
    private List<Result> result = new ArrayList<Result>(); 

    /** 
    * 
    * @return 
    * The result 
    */ 
    public List<Result> getResult() { 
     return result; 
    } 

    /** 
    * 
    * @param result 
    * The result 
    */ 
    public void setResult(List<Result> result) { 
     this.result = result; 
    } 

} 

Result.java

import com.google.gson.annotations.Expose; 
import com.google.gson.annotations.SerializedName; 

public class Result { 

    @SerializedName("doc_no") 
    @Expose 
    private String docNo; 
    @SerializedName("itembarcode") 
    @Expose 
    private String itembarcode; 
    @SerializedName("net_wt") 
    @Expose 
    private String netWt; 
    @SerializedName("gross_wt") 
    @Expose 
    private String grossWt; 
    @SerializedName("stone_wt") 
    @Expose 
    private String stoneWt; 
    @SerializedName("stone_amt") 
    @Expose 
    private String stoneAmt; 
    @SerializedName("rate") 
    @Expose 
    private String rate; 
    @SerializedName("making") 
    @Expose 
    private String making; 
    @SerializedName("qty") 
    @Expose 
    private String qty; 
    @SerializedName("net_rate") 
    @Expose 
    private String netRate; 
    @SerializedName("item_total") 
    @Expose 
    private String itemTotal; 
    @SerializedName("sum_total") 
    @Expose 
    private String sumTotal; 

    /** 
    * 
    * @return 
    * The docNo 
    */ 
    public String getDocNo() { 
     return docNo; 
    } 

    /** 
    * 
    * @param docNo 
    * The doc_no 
    */ 
    public void setDocNo(String docNo) { 
     this.docNo = docNo; 
    } 

    /** 
    * 
    * @return 
    * The itembarcode 
    */ 
    public String getItembarcode() { 
     return itembarcode; 
    } 

    /** 
    * 
    * @param itembarcode 
    * The itembarcode 
    */ 
    public void setItembarcode(String itembarcode) { 
     this.itembarcode = itembarcode; 
    } 

    /** 
    * 
    * @return 
    * The netWt 
    */ 
    public String getNetWt() { 
     return netWt; 
    } 

    /** 
    * 
    * @param netWt 
    * The net_wt 
    */ 
    public void setNetWt(String netWt) { 
     this.netWt = netWt; 
    } 

    /** 
    * 
    * @return 
    * The grossWt 
    */ 
    public String getGrossWt() { 
     return grossWt; 
    } 

    /** 
    * 
    * @param grossWt 
    * The gross_wt 
    */ 
    public void setGrossWt(String grossWt) { 
     this.grossWt = grossWt; 
    } 

    /** 
    * 
    * @return 
    * The stoneWt 
    */ 
    public String getStoneWt() { 
     return stoneWt; 
    } 

    /** 
    * 
    * @param stoneWt 
    * The stone_wt 
    */ 
    public void setStoneWt(String stoneWt) { 
     this.stoneWt = stoneWt; 
    } 

    /** 
    * 
    * @return 
    * The stoneAmt 
    */ 
    public String getStoneAmt() { 
     return stoneAmt; 
    } 

    /** 
    * 
    * @param stoneAmt 
    * The stone_amt 
    */ 
    public void setStoneAmt(String stoneAmt) { 
     this.stoneAmt = stoneAmt; 
    } 

    /** 
    * 
    * @return 
    * The rate 
    */ 
    public String getRate() { 
     return rate; 
    } 

    /** 
    * 
    * @param rate 
    * The rate 
    */ 
    public void setRate(String rate) { 
     this.rate = rate; 
    } 

    /** 
    * 
    * @return 
    * The making 
    */ 
    public String getMaking() { 
     return making; 
    } 

    /** 
    * 
    * @param making 
    * The making 
    */ 
    public void setMaking(String making) { 
     this.making = making; 
    } 

    /** 
    * 
    * @return 
    * The qty 
    */ 
    public String getQty() { 
     return qty; 
    } 

    /** 
    * 
    * @param qty 
    * The qty 
    */ 
    public void setQty(String qty) { 
     this.qty = qty; 
    } 

    /** 
    * 
    * @return 
    * The netRate 
    */ 
    public String getNetRate() { 
     return netRate; 
    } 

    /** 
    * 
    * @param netRate 
    * The net_rate 
    */ 
    public void setNetRate(String netRate) { 
     this.netRate = netRate; 
    } 

    /** 
    * 
    * @return 
    * The itemTotal 
    */ 
    public String getItemTotal() { 
     return itemTotal; 
    } 

    /** 
    * 
    * @param itemTotal 
    * The item_total 
    */ 
    public void setItemTotal(String itemTotal) { 
     this.itemTotal = itemTotal; 
    } 

    /** 
    * 
    * @return 
    * The sumTotal 
    */ 
    public String getSumTotal() { 
     return sumTotal; 
    } 

    /** 
    * 
    * @param sumTotal 
    * The sum_total 
    */ 
    public void setSumTotal(String sumTotal) { 
     this.sumTotal = sumTotal; 
    } 

} 
संबंधित मुद्दे