0

一个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"}]
4

1 回答 1

0

您将无法创建与您的声明匹配的 JSON 对象,因为那不是 JSON 对象:它是 Javascript 代码。

但是,一旦运行了 Javascript 代码,data它将包含一个可以序列化为 JSON 的对象,我假设这就是您想要实现的目标。

您的 Java 代码所做的是将 a 添加String到 a BasicDBArray- 它被解释为 a 的事实String不应该让人感到意外。出于同样的原因,当您添加一个 int 或一个布尔值时,它们被添加为 int 和布尔值,而不是字符串。

您实际想要放入 BasicDBArray 的是如果解释为 Javascript 将返回的值new Date('2011/12/01').getTime() 1970/01/01 和 2011/12/01 之间的毫秒数。我假设你可以通过类似的东西来检索它,或者你可以从你的对象中venmonth.getId().getDate().getTime()检索一个Date实例。venmonth

于 2013-07-26T13:59:30.167 回答