2011-09-04 5 views
5

JSONPEncoderFactory, JSONPBehavior 솔루션을 사용하여 WCF에서 JSONP를 활성화했습니다. 그게 다 괜찮아요, 모든 설정 및 잘 작동, 내 서비스가 제대로 문제가 거기에 데이터를 반환합니다.C에서 # JSON 변수를 소문자로 변환

그러나 JS에서 사용되는 방식 때문에 JSON 변수 이름을 소문자로 바꿀 수 있어야합니다. 아직까지는 이해할 수 없었습니다. 여기

{"Animals":["dog","cat","mouse"],"Owner":"Greg","Permanent":"y","ID":1,"DaysToStay":"1"} 

꽤 간단한 권리 (변수 이름과 값이 예를 들어, 양성 원소로 변경되었다) 내 서비스 출력의 예? 나는 "동물"이 "동물"이되기를 바라고 ...

json 파서를 사용해야합니까, 아니면 그냥 정규 표현식을 사용하는 것이 쉬운가요? 누군가가 전에 어떻게했는지 알려주면 감사 할 것입니다.

감사합니다.

+2

DataContract 기반 직렬화를 사용하고 있습니까? 그렇다면 [DataMember ("animals")] 등으로 속성을 꾸밀 수 있습니다. –

+0

C#에서 생성하는 경우 문자열에'.ToLower()'를 사용할 수 있습니다. – ChrisF

답변

2

당신은 자바 스크립트에이 기능을 사용할 수 있습니다

FN = function (obj) 
{ 
    var ret = null; 
    if (typeof(obj) == "string" || typeof(obj) == "number") 
     return obj; 
    else if (obj.push) 
     ret = []; 
    else 
     ret = {}; 

    for (var key in obj) 
     ret[String(key).toLowerCase()] = FN(obj[key]); 
    return ret; 
}; 

편집 : 는 C 번호와 함께 사전에 JSON 문자열을 역 직렬화 :

using System.Web.Script.Serialization; 
var serializer = new JavaScriptSerializer(); 
var dic = serializer.Deserialize<Dictionary<string,dynamic>>(yourJSONString); 

복잡한 필드는 사전에 직렬화됩니다. 그래서 당신은 matherialized dic을 검사하기위한 재귀 함수를 찾을 것입니다.

+0

응답 해 주셔서 감사합니다. 그러나 JavaScript 함수처럼 보입니다. 저는 스트림이 서비스에서 JSON으로 반환되기 바로 전에 ASP.NET에서이 작업을 수행하는 방법을 찾고 있습니다. – sidogg

+0

C#에서는 json 문자열을 사전으로 역변환 할 수 있습니다. 그것을 반복 한 다음 키를 사용하여 소문자로 새 사전을 작성하십시오. –