2012-03-31 6 views
0

주식 차트 생성을 위해 HighStock library을 사용해 보겠습니다. 차트로 데이터를 채우려면 예제에서 this source을 지정하십시오. 첫 번째 매개 변수는 밀리 초 단위의 unixtime이고 두 번째 매개 변수는 주식 종가입니다. 이것이 유효한 json인지 나는 모른다. 그러나 나는 다음과 같은 것이 json을 작성하는 더 적절한 방법이 될 것이라고 주장 할 것이다.C# JSON serialization

[{"Closing":63.15000,"Date":1262559600000},{"Closing":64.75000,"Date":1262646000000}, ... 

나는 HighStocks 구문에 적응하는 것 외에 다른 옵션이 없다고 생각합니다. 루핑을 통해이 문제를 해결할 수 있으며 문자열에 올바른 구문을 추가 할 수 있습니다. json을 만들기 위해 C# 객체를 직렬화하는 것이 더 현명합니다. 그렇다면 예제에 지정된 구문에 어떻게 도달 할 수 있습니까? 내가 불필요한 복잡하게

public class Quote { 
    public double Date { get; set; } 
    public decimal Closing { get; set; } 
} 

암 :

그냥이 내 C#을 객체라고하자? json 문자열을 포맷해야합니까?

답변

3

그들이 찾고있는 형식은 유효한 json입니다. 그것은 배열의 배열입니다.

var item1 = new[] { 1, 2 }; 
var item2 = new[] { 3, 4 }; 
var itemArray = new[] { item1, item2 }; 

itemArray[ [1, 2], [3, 4] ]에 직렬화 것이다.

기존 클래스를 유지하고 직렬화 문제 만 해결할 수 있어야합니다.

예를 들어, MVC 응용 프로그램에서 당신은 할 수 :

public ActionResult Quotes() { 
    var quotes = service.GetQuotes(); //IEnumerable<Quote> 
    return Json(quotes.Select(x=>new[] { EpochMillis(x.Date), (double)x.Closing }).ToArray()); 
} 

private double EpochMillis(DateTime date) 
{ 
    DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0); 
    TimeSpan diff = date - origin; 
    return Math.Floor(diff.TotalMilliseconds); 
} 
+0

너 - 각하 - 최고입니다! 감사! –

0

처음에는 기본 형식을 얻기 위해 {}을 {}로 대체합니다. 이후에는 최종 결과를 얻으려는 유효한 JSON의 레이블을 제거 할 수 있습니다.

나는 모든 공식 JSON 표준을 지원하지 않는 라이브러리를 사용하는 것이 좋습니다 않을 것이다 ...

는 Infragistics의 또는 C1 같은 다른 libs와 시도 - 그들은 매우 좋다!

인사말,

+0

좋아 ...하지만 직렬화 - 아마도 ...> 출력은 거의 똑같이 나쁜 솔루션 것 같아 -> 문자열을 대체합니다. 그러나 나는 그것을 좋아하지 않는다. –

+0

물론 맘에 안들어. 그것을하는 것은 나쁘고 질적이지 못한 방법입니다. 도서관 개발자는 항상 "가정식 ..."이 아닌 공식 표준을 지원해야합니다. –

+0

예, 정확합니다 ... 표준을 지원하는 것이 좋습니다. –