0

プロパティに quote(')、スラッシュ (/)、または Environmental.NewLine を含むオブジェクトがあります。

このオブジェクトを JSON 文字列として構築し、jQGrid に割り当てようとしました。

しかし、それは示していますInvalid JSON Parser error

これを正常に解析するにはどうすればよいですか。

 myObj=new {Text=@"Samp'le value"}

ASP.Net MVC では、return JSON(myObj)JSON の構築に使用されます。

' / Environmental.NewLine(\n)JSONの解析中にこれを処理するために構成する必要がある場所はありますか?

Newtosoft JSONのように処理するには、他のライブラリを使用する必要がありますか?

サーバーからの JSON

     {"total":1 ,"page":1,"records":3,"rows":[{"i":0,"cell":"","1","1","DesSinglApostropAndURLhasEnterKeyChar",
"Samp'le value","http://google.com/Dashboard.aspx?ParcelNbr= {SITE_APN}","False","",""]},"i":1,"cell":"","2","2","DesWithSlashAndURLwithSlash",
 "Sample\value2","http://Googole.com/Dashboard.aspx?ParcelNbr={SITE_APN}&ABC=\XYZ","False","",""]},{"i":2,"cell":["","3","3","DesWithAmpersand","Sample & value3"","http://Googole.com","False","",""]}]}
4

1 に答える 1

3

仕様 (こちらまたはこちらを参照) のみ"に対応し、\文字はエスケープする必要があります。他のいくつかの文字はエスケープできます。したがって、エスケープ'されていない文字はエラーではありません。エラー「Invalid JSON Parser error」には別の理由があると思います。

jqGrid の使用方法を示す完全な JavaScript コード、ASP.NET MVC コントローラー アクションのコード、またはサーバーを返す完全な JSON 応答を含める必要があります。一般に、 Json.NET (Newtosoft) を使用しなくても、Json.NET またはその他のライブラリを使用しても、正しい JSON 応答を生成できます。

autoencode: truejqGridでテキストデータを正しく表示するオプションを含める必要があります。datatype: "json"andjsonReaderオプションを使用する必要があります (ドキュメントを参照してください)。そのため、jqGrid でデータを正しく表示するには、適切なフォーマッタ JSON または XML データを生成するだけでは十分ではありません。データの正確な形式に関する情報を提供する jqGrid オプションを含める必要がある場合があります。

UPDATED : あなたが投稿した JSON データは本当に壊れています。jsonlint.orgは、JSON データを検証できる良い場所です。データが完全に間違っているため、JSON データを手動で生成しようとしている可能性があります。

{
    "total": 1,
    "page": 1,
    "records": 3,
    "rows": [
        {
            "i": 0,
            "cell": "", <---- it must be "cell": [""
            "1",
            "1",
            "DesSinglApostropAndURLhasEnterKeyChar",
            "Samp'le value",
            "http://google.com/Dashboard.aspx?ParcelNbr= {SITE_APN}",
            "False",
            "",
            ""
        ]
    },
    "i": 1, <--- it must be {"i": 1
    "cell": "",
    "2",
    "2",
    "DesWithSlashAndURLwithSlash",
    "Sample\value2",  <--- it must be "Sample\\value2" or "Sample value2"
    "http://Googole.com/Dashboard.aspx?ParcelNbr={SITE_APN}&ABC=\XYZ", <--- \XYZ is WRONG
    "False",
    "",
    ""
]
},
{
"i": 2,
"cell": [
    "",
    "3",
    "3",
    "DesWithAmpersand",
    "Sample & value3"","http: //Googole.com","False","",""]}]} <-- "Sample & value3"" is WRONG

データには 5 つの構文エラーが含まれています。

  • "cell": ""の代わりの使用法"cell": [""
  • }, "i": 1,の代わりの使用法}, {"i": 1,
  • またはの"Sample\value2"代わりの使用法"Sample value2""Sample\\value2"
  • またはの"http://Googole.com/Dashboard.aspx?ParcelNbr={SITE_APN}&ABC=\XYZ"代わりの使用法"http://Googole.com/Dashboard.aspx?ParcelNbr={SITE_APN}&ABC=XYZ""http://Googole.com/Dashboard.aspx?ParcelNbr={SITE_APN}&ABC=\\XYZ"
  • またはの"Sample & value3""代わりの使用法"Sample & value3""Sample & value3\""

さらに、 (は に固定する必要があります)iの代わりにプロパティを使用しました。JSON のエラーではありませんが、jqGrid のデータを生成する必要があるため、jqGrid が期待する形式を保持する必要があります。ドキュメントを参照してください。修正された JSON 応答は次のようになります。id"i": 1"id": 1

{
    "total": 1,
    "page": 1,
    "records": 3,
    "rows": [
        {
            "id": 0,
            "cell": [
                "",
                "1",
                "1",
                "DesSinglApostropAndURLhasEnterKeyChar",
                "Samp'le value",
                "http://google.com/Dashboard.aspx?ParcelNbr= {SITE_APN}",
                "False",
                "",
                ""
            ]
        },
        {
            "id": 1,
            "cell": [
                "",
                "2",
                "2",
                "DesWithSlashAndURLwithSlash",
                "Sample value2",
                "http://Googole.com/Dashboard.aspx?ParcelNbr={SITE_APN}&ABC=XYZ",
                "False",
                "",
                ""
            ]
        },
        {
            "id": 2,
            "cell": [
                "",
                "3",
                "3",
                "DesWithAmpersand",
                "Sample & value3",
                "http: //Googole.com",
                "False",
                "",
                ""
            ]
        }
    ]
}

jqGrid を使用した ASP.NET MVC の使用例のコードを分析し (例についてはこちらを参照)、サーバー コードを修正することをお勧めします。

于 2013-04-26T06:06:05.527 に答える