2012-06-05 4 views
0

이 작업을 수행 할 수 없습니다. 이 json 문자열이 있고 그것을 C# 개체로 변환 할 :json 문자열을 변환하는 방법?

{ "name": "mousePos", "args": [{ "rid": "1" "posx": 1277, "posy": 275}}}

나는 노력했지만 아무런 운이 없었어. 나는 posx와 posy의 값을 얻는 방법을 확신 할 수 없다. 아무도 내가 어떻게 할 것이라고 제안 할 수 있습니까? 도와 주셔서 감사합니다.

편집 :

public class JsonData 
{ 
    public string name { get; set; } 
} 
public Form1() 
{ 
    // ---- Other stuff here ---- 

    string json = data.MessageText; // The json string. 

    JavaScriptSerializer ser = new JavaScriptSerializer(); 
    JsonData foo = ser.Deserialize<JsonData>(json); 


    MessageBox.Show(foo.name); // Shows 'mousePos' 
} 
+1

JavaScriptSerializer로 시도한 것을 보여줄 수 있습니까? –

+0

물론입니다. 나는 그 질문을 편집했다. –

답변

0

: 뭔가 것처럼해야 같은데요. 귀하의 예를 통해 얻은 결과에 따라 다음과 같이됩니다 :

public class JsonData 
{ 
    public string name { get; set; } 
    public Arguments[] args { get; set; } 
} 

public class Arguments 
{ 
    public MouseDet mouseDet { get; set; } 
} 

public class MouseDet 
{ 
    public int rid { get; set; } 
    public int posx { get; set; } 
    public int posy { get; set; } 
} 

... 

var posx = foo.args[0].mouseDet.posx; 
1

나는 JsonLint로하고 오류를 가지고 있다는 떨어졌다. 당신의 "인수"속성이 유효한 배열이 아닌 대괄호의 내부에 키/값 쌍을 포함하고 있기 때문에 그것의 잘못된 JSON

{ 
    "name": "mousePos", 
    "args": [ 
     "mouseDet": { 
      "rid": "1", 
      "posx": 1277, 
      "posy": 275 
     } 
    } //-- THIS should not be here. 
] 
} 
+0

아. 이게 괜찮은가요? { "name": "mousePos", "args": [{ "mouseDet": { "rid": "1", "posx": 1277, "posy": 275}}] –

+0

예, 좋아 보인다. –

0

json으로 유효하지 않은 이유는. 당신은 단지 그것을 충당하기 위해 조금을 개체 모델을 확장 할 필요가

{ 
    "name":"mousePos", 
    "args":[{"mouseDet":{"rid":"1","posx":1277,"posy":275}}] 
} 
+0

예, 죄송합니다. 그게 전부 야. 오식. :) –

관련 문제