位置67处的意外字符(j)

时间:2014-11-06 15:34:32

标签: java json

我有一个json文件,其中包含代表某些形状的json数组,

[{"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;
  }

我想阅读这个文件并创建这些形状并返回形状数组,但我有任何帮助错误吗?

1 个答案:

答案 0 :(得分:6)

描述单个值的JSON对象属性应该是键值对,其中值是有效的JSON属性值类型之一,如字符串或数字。

但是,您的Color属性没有可以转换为其中任何一个的值。

具体做法是:

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

绝不是有效的JSON。

请尝试指定您的颜色:

"Color":"#ffff0000"