JSON表单帮助

2024-04-20 07:13:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我在web上使用JSON示例,如下所示。

{
  "menu": "File", 
  "commands": [ 
      {
          "title": "New", 
          "action":"CreateDoc"
      }, 
      {
          "title": "Open", 
          "action": "OpenDoc"
      }, 
      {
          "title": "Close",
          "action": "CloseDoc"
      }
   ] 
}
我尝试将这个加载到两个不同的解析器中,一个在C++中,一个在Python中。

这是Python的回溯。

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.6/json/__init__.py", line 267, in load
    parse_constant=parse_constant, **kw)
  File "/usr/lib/python2.6/json/__init__.py", line 307, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python2.6/json/decoder.py", line 319, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python2.6/json/decoder.py", line 338, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded

以下是jsoncpp报告的内容。

* Line 1, Column 1
  Syntax error: value, object or array expected.

你知道我做错了什么吗?

编辑:

好的,这里有一些代码。出于某种原因,Python现在可以工作了。我什么也没做,只是去了商店。这一定是Python的一个特性——去商店,随机错误就会消失。那些Python开发人员是天才。

但关键是。这里是C++代码。

bool CFG::CFG_Init( const char* path ) {
    bool r = reader.parse( path, root );
    if( r ) {
        return true;
    } else {
        std::cout << reader.getFormatedErrorMessages() << std::endl;
        return false;
    }
}

我试过这个,其中“path”也是std::string——同样的东西。我这样调用方法:

if( !CFG_Init("test.json") ) {
    error("Couldn't load configuration.");
}

这是班级。

class CFG: virtual Evaluator {
    Json::Reader reader;
    public:
    Json::Value root;
    bool CFG_Init( const char* path);
    Json::Value CFG_Fetch_Raw(Json::Value section, std::string key, Json::Value defval);
    Json::Value CFG_Fetch(Json::Value section, std::string key, Json::Value defval );
};

Tags: pathinpyjsontitlevaluelibusr