簡體   English   中英

在json數組中找到雙引號

[英]double quotes found in json array

json數組如下所示

var data = [
            {label:'gggg',data: [[(new Date('2011/12/01')).getTime(),53914],[(new Date('2012/1/02')).getTime(),32172],[(new Date('2012/2/03')).getTime(),824],[(new Date('2012/4/04')).getTime(),838],[(new Date('2012/6/05')).getTime(),755],[(new Date('2012/7/06')).getTime(),0],[(new Date('2012/8/07')).getTime(),0],[(new Date('2012/9/08')).getTime(),0],[(new Date('2012/10/09')).getTime(),0],[(new Date('2012/11/10')).getTime(),0],[(new Date('2012/12/11')).getTime(),0],[(new Date('2012/12/11')).getTime(),0]]}

        ];

在用於創建上述類似json的java類中,我使用下面給出的以下代碼。
但問題是每個 "(new Date(2012/12/01)).getTime()" 中都有雙引號

誰能告訴我如何刪除那些雙引號

 Query q1=session.createQuery("FROM VendorMonth");
          List li1=q1.list();


          String supname="",tempsupname;  
          JSONObject obj = new JSONObject();
          JSONArray jsonarrmast = new JSONArray();
          List s=new ArrayList();

          JSONArray finals=new JSONArray();
          JSONArray finalarray = new JSONArray();
          for(int i=0;i<li1.size();i++)
          {
            HashMap hmap = new HashMap();
            VendorMonth venmonth=(VendorMonth) li1.get(i);
            tempsupname=venmonth.getId().getSupplierName();
            if(i==0){
                supname=venmonth.getId().getSupplierName(); 
            }

            if(!supname.equals(tempsupname)){
                obj.put("label", supname);
                obj.put("data", jsonarrmast); 
                jsonarrmast = new JSONArray();
                s.add(obj);
                finalarray.put(obj);
                obj = new JSONObject();
                supname=venmonth.getId().getSupplierName();

                JSONArray jsonarr = new JSONArray();
                String date=venmonth.getId().getYearnam()+"/"+venmonth.getId().getMonthnam()+"/01";
                String ss=new String("(new Date("+date+")).getTime()");
                jsonarr.put(ss);
                jsonarr.put(venmonth.getId().getRentalrate());
                jsonarrmast.put(jsonarr);
            }
            else
            {
                JSONArray jsonarr = new JSONArray();
                String date=venmonth.getId().getYearnam()+"/"+venmonth.getId().getMonthnam()+"/01";
                String ss=new String("(new Date("+date+")).getTime()");
                jsonarr.put(ss);
                jsonarr.put(venmonth.getId().getRentalrate());
                jsonarrmast.put(jsonarr);

            }

            if(i==(li1.size()-1)){
               obj.put("label", supname);
               obj.put("data", jsonarrmast); 
               jsonarrmast = new JSONArray();
               s.add(obj); 
               finalarray.put(obj);
            }


          }

但是我得到的輸出如下

[{"data":[["(new Date(2012/12/01)).getTime()",10976.23],["(new Date(2013/1/01)).getTime()",51213.8200000002],["(new Date(2013/2/01)).getTime()",32172.31],["(new Date(2013/3/01)).getTime()",824.600000000001],["(new Date(2013/4/01)).getTime()",838.000000000001],["(new Date(2013/5/01)).getTime()",755.780000000001],["(new Date(2013/6/01)).getTime()",50877.12]],"label":"Weather Ford"},{"data":[["(new Date(2012/12/01)).getTime()",24368.3],["(new Date(2013/1/01)).getTime()",1968.76]],"label":"Logan Tools"},{"data":[["(new Date(2012/12/01)).getTime()",3425.63],["(new Date(2013/1/01)).getTime()",731.75]],"label":"Pioneer tools"}]

您將無法創建與您的聲明相匹配的JSON對象,因為它不是JSON對象:它是Javascript代碼。

但是,一旦運行了Javascript代碼, data將包含一個可以序列化為JSON的對象,而我假設這就是您要實現的目標。

您的Java代碼所做的就是將String添加到BasicDBArray -將其解釋為String這一事實不足為奇。 同樣,當您添加int或boolean時,它們將被添加為int和boolean,而不是字符串。

實際想在BasicDBArray中輸入的值是如果將new Date('2011/12/01').getTime()解釋為Javascript將返回的值:1970/01/01至2011/12 /之間的毫秒數01。 我假設您可以通過venmonth.getId().getDate().getTime()之類的方法來檢索該內容,或者它是您從venmonth對象中檢索一個Date實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM