字符常量JSON无效

时间:2013-10-29 07:24:25

标签: java json

public class Test {

    public static void main(String[] args) throws ClientProtocolException, IOException {
    HttpClient client = new DefaultHttpClient();

    JSONObject json = new JSONObject();
    json.put('set_boot' : True);
    json.put('synchronous': True),
    json.put('filters',filterList);

    List filterList = new ArrayList();
    filterList.put(6005076802818994A0000000000009DD);

    json.put('volumes':volumeList);

    List volumeList = new ArrayList();
    volumeList.add('*all');

    json.add( 'allow_unsupported': True);
    StringEntity se = new StringEntity( json.toString());
    System.out.println(se);
   }
}

我正在尝试添加值以转换为JSON查询,如:

{
    'set_boot': True,
    'synchronous': True,
    'filters': {
        'host_refs': [u '6005076802818994A0000000000009DD']
    },
    'volumes': ['*all'],
    'allow_unsupported': True
}

但是Eclipse给了我错误的无效字符常量 在线

json.put('set_boot' : True);

我尝试过写一些其他的话,比如

json.put('set' : True);

但它仍然给我同样的错误。

2 个答案:

答案 0 :(得分:3)

如果这是Java,您需要:

json.put("set_boot", true);
json.put("synchronous", true);

(稍后会出现类似的问题。)

注意:

  • 字符串文字是双引号,而不是Java中的单引号
  • 您正在使用两个参数调用方法 - 使用逗号分隔参数
  • Java中的布尔值为true,而不是True。如果需要,可以使用"True"设置字符串
  • 您在宣布
  • 之前尝试使用filterList
  • 您尝试在put上致电List,当该方法不存在时......您的意思是add
  • 您的6005076802818994A0000000000009DD字面无效。你的意思是使用字符串文字吗?

这些都只是Java语言的问题,并且与JSON本身无关。

答案 1 :(得分:1)

除了Java中的snytax错误之外,您的JSON示例也是无效的语法。使用jsonlint或其他服务进行检查。它应如下所示:

{
    "set_boot": true,
    "synchronous": true,
    "filters": {
        "host_refs": [
            "6005076802818994A0000000000009DD"
        ]
    },
     "volumes": [
        "*all"
    ],
    "allow_unsupported": true
}