2014-06-06 4 views
0

죄송합니다. 이전에 여러 번 요청한 질문에 대해 고소 당할 것임을 알고 있지만 필자는 필사적으로 검색하고, 모든 종류의 제안을 시도했으며, 그러나 아무것도 나를 위해 일하지 않고 있었다.JSON이 jqGrid에서 이스케이프 처리 된 문자

일부 JSON 데이터를 아포스트로피로 반환하는 서비스가 있습니다. 그래서 "Mike's example record은"이 같은 반환됩니다 : 내가 알고 싶은 무엇

{ 
    "Results": [ 
    { 
     "ID": 139, 
     "Name": "Mike\u0027s example record", 
     "CedentName": "Mikes Business Partner" 
    }], 
    "Success": "1" 
} 

이있는 jqGrid 아포스트로피에 다시이 \u0027 코드를 변환하는 얻는 방법이다.

enter image description here

나는, 나는 알고있다, 이것은 명백한 설정해야합니다 알지만, 등등, 봤을 검색 한있는 jqGrid datatype 속성 기능을 추가하는 시도하고있다, 그러나 아무것도 작동하지 않았다.

$("#tblCustomers").jqGrid({ 
       url: '/JSON/GetCustomers.aspx', 
       contentType: "application/json; charset=utf-8", 
       datatype: "json", 
       viewrecords: true, 
       loadonce: true, 
       jsonReader: { 
        root: "Results", //arry containing actual data 
        id: "ID",   //index of the column with the PK in it 
        repeatitems: false 
       }, 
       . . . 
       . . . 
       autoencode: true, 
       caption: "" 
      }); 

또 다른 질문 :

여기 내가있는 jqGrid를 JSON 데이터를로드하고 채우는 데 사용하는 코드의 관심에서, 나는 거기에 speechmarks 또 다른 기록을 추가했다.

기괴하게도 JavaScriptSerializer() 함수가 잘못된 JSON을 생성 한 다음 jqGrid에 아무 것도 표시되지 않았습니다!

string JSON = new JavaScriptSerializer().Serialize(listOfRecords).ToString(); 

는 다음 무효 JSON 문자열을 생산했다. 이 \u0022에 speechmark을 인코딩하지 얼마나

주의 사항 :

{ 
    "Results": [ 
     { 
      "ID": 140, 
      "Name": "Mikes \\"Speechmark test\\" RP", 
      "CedentName": "Mikes Cedent" 
     }, 

은 내가 할 수있는,이 특질을 알아 차리지 유일한 사람이 될 수 없습니다 ...?

잠시 후 ..

마이크로 소프트의 지원되지 않는 형식을 사용하여, JavaScriptSerializer() 형식의 날짜를하는 방법을 this article을 읽어 본 후 :

StartDate: "\/Date(1401573600000)\/", 

.. 난은 JavaScriptSerializer() 꽤 불쾌한 것을 깨달았 JSON.Net으로 바 꾸었습니다.

이상하게이 speechmarks 함유 값 직렬화에 관해서, 즐겁게 무효 JSON 문자열 (위와 같이 그 필드 값의 중간 왼쪽 speechmark와 같은 잘못된 형식이 만들면 비참 실패이 클래스).

그러나 아포스트로피 만 남겨두면 포맷터가 필요없이 jqGrid에서 내 데이터를 볼 수 있습니다.

답변

0

다음은 내가 답을 찾은 것 중 가장 가까운 것입니다.

그리드의 각 셀에 포맷터를 적용하여 강제로 JSON 값을 구문 분석하면 \u0027 이스케이프 코드가 다시 아포스트로피로 변환됩니다.

$("#tblCustomers").jqGrid({ 
       url: '/JSON/GetCustomers.aspx', 
       contentType: "application/json; charset=utf-8", 
       datatype: "json", 
       colModel: [ 
        { name: "ID", width: 70, align: "center", formatter: formatCell }, 
        { name: "Name", search: true, width: 290, formatter: formatCell }, 
        { name: "CedentName", search: true, width: 290, formatter: formatCell } 
       ], 
       . . . 

이 않는 일을, 나는 결국 내있는 jqGrid에서 아포스트로피 볼 수 :

function formatCell(cellValue, options, rowdata, action) { 
    return JSON.parse("\"" + cellValue + "\""); 
} 

다음있는 jqGrid에 각 열을이 포매터를 추가

enter image description here

그러나 이것을 수행하는 더 깨끗한 방법이 있어야합니다 ...?