0

次のように、Ext.decode(string)を使用してextjs4でデコードします。これは、json文字列を内部に含むjson文字列です。

var string = "{success:true, 
rows:[{"jsonfields":"[
{\\"name\\":\\"cm:title\\",\\"title\\":\\"Titolo\\",\\"description\\":\\"Titolo del contenuto\\",\\"dataType\\":\\"d:mltext\\",\\"url\\":\\"\/api\/property\/cm_title\\"},
{\\"name\\":\\"cm:content\\",\\"title\\":\\"Contenuto\\",\\"description\\":\\"Contenuto\\",\\"dataType\\":\\"d:content\\",\\"url\\":\\"\/api\/property\/cm_content\\"},
{\\"name\\":\\"cm:name\\",\\"title\\":\\"Nome\\",\\"description\\":\\"Nome\\",\\"dataType\\":\\"d:text\\",\\"url\\":\\"\/api\/property\/cm_name\\"}]"}
]}";

ご覧のとおり、「jsonfields」はjson文字列コードです。Ext.decode(string)を使用してこの文字列をデコードするにはどうすればよいですか?

4

2 に答える 2

0

JSONコードにいくつか問題がありました。

  1. すべてのキーは引用符で囲む必要がありました(成功と行は引用符で囲まれていませんでした)。
  2. JSON文字列をJavaScriptに直接埋め込む場合は、一重引用符を使用してください。このようにして、エスケープ文字の使用を避けることができます。

以下は正しいJSONコードです。jsfiddleリンクも更新しました。

var string = '{
"success": true,
"rows": [
    {
        "jsonfields": [
            {
                "name": "cm: title",
                "title": "Titolo",
                "description": "Titolodelcontenuto",
                "dataType": "d: mltext",
                "url": "/api/property/cm_title"
            },
            {
                "name": "cm: content",
                "title": "Contenuto",
                "description": "Contenuto",
                "dataType": "d: content",
                "url": "/api/property/cm_content"
            },
            {
                "name": "cm: name",
                "title": "Nome",
                "description": "Nome",
                "dataType": "d: text",
                "url": "/api/property/cm_name"
            }
        ]
    }
]}';


var decodedString = Ext.decode(string);
console.log(decodedString);

</ p>

于 2012-06-08T19:06:53.097 に答える
0

これはExtを使用してJSONをデコードする正しい方法であり、例外はJSON文字列の無効な構文について通知する可能性があります。JSON形式は非常に厳密です。

jsonlintのようなオンラインバリデーターを使用して、構文の何が問題になっているのかを理解するのに役立てることができます。

もう1つの注意:このような場合、通常、文字列を一重引用符で囲む方が簡単です。これにより、二重引用符をエスケープせずに埋め込むことができます。

var string = '{ "success": true, ...}'
于 2012-06-08T12:37:18.907 に答える