2012-04-23 3 views
0

실제로 PHP 웹 서비스에서 JSON 요청 응답을 C# 객체로 구문 분석하려고합니다.다중 응답 및 null 값 처리

나는 json.net를 사용하여 일부 코드 샘플을 발견 한 후 나는 나의 와인 클래스에서이 코드를 만든 :

public Wine(string json) 
    { 
     JObject jObject = JObject.Parse(json); 
     BottleName = (string)jObject["name"]; 
     Category = (string)jObject["category"]; 
     Prize50 = Double.Parse((string)jObject["prize_50"]); 
     Prize75 = Double.Parse((string)jObject["prize_75"]); 
     Prize150 = Double.Parse((string)jObject["prize_150"]); 
     Prize300 = Double.Parse((string)jObject["prize_300"]); 
    } 

그것은 작업의 완벽 만약에만 1 응답

"{\"id\":\"2\",\"name\":\"Pinot noir\",\"loc_wine\":\"",\"category\":\"Red\",\"prize_50\":\"12.800000\",\"prize_75\":\"16.500000\",\"prize_150\":\"0.000000\",\"prize_300\":\"0.000000\"} " 

같은 하지만 내 json 응답에 다른 Json 문자열이있을 때 문제가 발생하며 어떻게 처리 할 수 ​​있는지 알고 싶습니다.

때때로 필드가 null 인 경우 어떻게 무시할 수 있습니까?

도움 주셔서 감사합니다. :-)

P. 필요한 경우 내 PHP 파일에서 내 datas를 보내는 방법이 있습니다 :

다음 각 행에 대한 JSON 응답을 메아리의 mysqli_fetch 문에서 반환 된 하나 이상의 행에 배열의 응답을주지 않고있는 경우
 $req = "SELECT * 
     FROM t_wine 
     WHERE name= \"Pinot noir\""; // for test purpose 


     $res = mysqli_query($connection, $req); 
     while($data= mysqli_fetch_assoc($res)) { 
      extract ($data); 
      echo json_encode($data); 

     } 
+0

을 내 json 응답에 또 다른 Json 문자열이 있는데 어떻게 처리 할 수 ​​있는지 알고 싶습니다. " 귀하의 json이 'Wine'의 인스턴스를 두 개 이상 포함하고 있거나 같은 문자열에 다른 클래스가 있다는 것을 의미합니까? – SouthShoreAK

+0

나는 포도주의 또 다른 예를 가지고있다. – Edelweiss

답변

2

나쁜 JSON 줄 것이다. 응답은 기본적으로 다음과 같습니다.

{..some data...}{...some data...} 

JSON의 배열 구조를 활용 해 봅시다. 이런 식으로 뭔가를 줄 것이다 배열

$res = mysqli_query($connection, $req); 
echo "["; 
while($data= mysqli_fetch_assoc($res)) { 
    extract ($data); 
    echo json_encode($data); 
    echo ","; 
} 
echo "]"; 

같은 출력 PHP 코드를 변경합니다

[{...some data...},{...some data...},] 

이 명심,이 거칠다. 끝 괄호 앞에있는 마지막 쉼표를 다듬어야합니다. 하지만 유효한 JSON 배열입니다.

jObject를 하나의 객체 대신 객체의 배열로 처리하려면 C#을 수정해야합니다.

+0

나는 네가 여기서 쓴 것을 모두 시도 할 것이고, 이것이 정확히 내가 필요로하는 것 같은 느낌이 든다. 고마워! – Edelweiss

0

좋아, 당신이 Wine의 여러 인스턴스를 받고 처리하기 위해 노력하고있다, 당신은 json.net에서 null 값을 무시하려는 경우, 당신이 할 수 있습니다 : 당신은 내가있을 때 "가 무슨 뜻 이죠

var settings = new JsonSerializerSettings{ NullValueHandling = NullValueHandling.Ignore }; 
                       } 
JsonConvert.DeserializeObject<IEnumerable<Wine>>(response.ToString(), settings);