2014-11-06 84 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