2014-11-06 82 views
-1

我有一個包含代表一些形狀像JSON數組JSON文件,意外的字符(J)67

[{"Cordinates": [272.0,81.0,200.0,100.0], 
    "Type":"Ellipse2D", 
    "Color":java.awt.Color[r=255,g=0,b=0]}, 
{"Cordinates":[227.0,272.0,200.0,100.0], 
    "Type":"Rectangle2D", 
    "Color":java.awt.Color[r=255,g=0,b=0]} 
] 

錯誤

Unexpected character (j) at position 67. 

這裏是我的代碼來解析這個

public List<ShapeItem> read() {  
    try { 
     Object obj = parser.parse(new FileReader(filePath)); 
     JSONArray ja = (JSONArray)obj;   
     for (int j = 0; j < ja.size(); j++){ 
      JSONObject si = (JSONObject) ja.get(j); 
      String type = (String) si.get("Type");    
      JSONArray cordinates = (JSONArray) si.get("Cordinates"); 
      Float x, y, width, height; 
      x = (Float) cordinates.get(0); 
      y = (Float) cordinates.get(1); 
      width = (Float) cordinates.get(2); 
      height = (Float) cordinates.get(3); 
      if (type.equals("Ellipse2D")){ 
       s = new Ellipse2D.Float(x, y, width, height); 
      } 
      else if (type.equals("Rectangle2D")){ 
       s = new Rectangle2D.Float(x, y, width, height); 
      } 
      c = (Color) si.get("Color"); 
      shapeItem = new ShapeItem(s, c); 
      shapes.add(shapeItem); 
     } 
    } 
     return shapes; 
    } 

我想讀這個文件並創建這些形狀並返回形狀的數組,但我得到的任何錯誤的LP?

+1

_but我得到errors_那是** **所有你必須說或者想告訴我們** **哪個錯誤? – 2014-11-06 15:36:18

+0

如果您可以告訴我們您使用的是哪個JSON解析器,它也將有所幫助。 – 2014-11-06 15:38:50

+1

這不是您發佈的錯誤。這是一個堆棧跟蹤_沒有錯誤信息。 – 2014-11-06 15:39:33

回答

6

描述單個值的JSON對象屬性應該是鍵值對,其中值是諸如字符串或數字之類的有效JSON屬性值類型之一。

但是,您的Color屬性沒有可以轉換爲其中任何一個的值。

具體做法是:

"Color":java.awt.Color[r=255,g=0,b=0] 

絕不是有效的JSON。

嘗試指定這樣的,而不是你的顏色:

"Color":"#ffff0000" 
+1

@SotiriosDelimanolis:非常好的一點。我本可以更好地澄清第一次。我修改了答案以更好地適應爲屬性值指定各種不同類型的能力。 – 2014-11-06 15:51:18

+0

所以我如何將商店顏色存儲在json中 – name 2014-11-06 15:52:02

+1

您可以將其表示爲「#aarrggbb」形式的顏色字符串或編碼您想要的argb的整數值。 – 2014-11-06 15:53:11