2014-02-18 5 views
-2

Я получаю измерения из предложений и хочу показать их на графиках, но не могу преобразовать их в json. я также попробовать JsonConvert.SerializeObject(myString) с помощью Newtonsoft.dll и простойНевозможно преобразовать строку в json

System.Web.Script.Serialization.JavaScriptSerializer sr = new System.Web.Script.Serialization.JavaScriptSerializer(); 
sr.Serialize(myString); 

но это не преобразование.

Мои измерения измерительная строка выглядит следующим образом.

{ 
    "status": 0, 
    "body": { 
    "updatetime": 1392764547, 
    "measuregrps": [ 
     { 
     "grpid": 17945868, 
     "attrib": 0, 
     "date": 139984270, 
     "category": 1, 
     "measures": [ 
      { 
      "value": 72, 
      "type": 9, 
      "unit": 0 
      }, 
      { 
      "value": 152, 
      "type": 10, 
      "unit": 7 
      }, 
      { 
      "value": 87, 
      "type": 17, 
      "unit": 0 
      } 
     ] 
     }, 
     { 
     "grpid": 176587495, 
     "attrib": 0, 
     "date": 13915689, 
     "category": 1, 
     "measures": [ 
      { 
      "value": 94, 
      "type": 9, 
      "unit": 0 
      }, 
      { 
      "value": 145, 
      "type": 10, 
      "unit": 0 
      }, 
      { 
      "value": 109, 
      "type": 11, 
      "unit": 0 
      } 
     ] 
     }, 
     { 
     "grpid": 179262494, 
     "attrib": 0, 
     "date": 1391369607, 
     "category": 1, 
     "measures": [ 
      { 
      "value": 77, 
      "type": 9, 
      "unit": 0 
      }, 
      { 
      "value": 121, 
      "type": 10, 
      "unit": 0 
      }, 
      { 
      "value": 87, 
      "type": 11, 
      "unit": 0 
      } 
     ] 
     }, 
     { 
     "grpid": 179258492, 
     "attrib": 0, 
     "date": 1391171167, 
     "category": 1, 
     "measures": [ 
      { 
      "value": 61, 
      "type": 9, 
      "unit": 0 
      }, 
      { 
      "value": 107, 
      "type": 10, 
      "unit": 0 
      }, 
      { 
      "value": 80, 
      "type": 11, 
      "unit": 0 
      } 
     ] 
     }, 
     { 
     "grpid": 179089150, 
     "attrib": 0, 
     "date": 1391167537, 
     "category": 1, 
     "measures": [ 
      { 
      "value": 69, 
      "type": 9, 
      "unit": 0 
      }, 
      { 
      "value": 112, 
      "type": 10, 
      "unit": 0 
      }, 
      { 
      "value": 67, 
      "type": 11, 
      "unit": 0 
      } 
     ] 
     }, 
     { 
     "grpid": 179079661, 
     "attrib": 2, 
     "date": 1391164672, 
     "category": 1, 
     "measures": [ 
      { 
      "value": 720, 
      "type": 1, 
      "unit": -1 
      } 
     ] 
     }, 
     { 
     "grpid": 17998560, 
     "attrib": 2, 
     "date": 146989672, 
     "category": 1, 
     "measures": [ 
      { 
      "value": 284, 
      "type": 4, 
      "unit": -2 
      } 
     ] 
     } 
    ] 
    } 
} 
+0

Что происходит? Вы получили сообщение об ошибке? вы пробовали меньше/подмножество своего JSON? – n8wrl

+0

Нет, я не получил ошибку, но тот же результат, что и вход –

+0

Я отредактировал ваш заголовок. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

ответ

1

Кажется, вы хотите Deserialize вашей JSon строки, не сериализации:

var obj = JsonConvert.DeserializeObject<Withings.RootObject>(json); 

public class Withings 
{ 
    public class Measure 
    { 
     public int value { get; set; } 
     public int type { get; set; } 
     public int unit { get; set; } 
    } 

    public class Measuregrp 
    { 
     public int grpid { get; set; } 
     public int attrib { get; set; } 
     public int date { get; set; } 
     public int category { get; set; } 
     public List<Measure> measures { get; set; } 
    } 

    public class Body 
    { 
     public int updatetime { get; set; } 
     public List<Measuregrp> measuregrps { get; set; } 
    } 

    public class RootObject 
    { 
     public int status { get; set; } 
     public Body body { get; set; } 
    } 
} 
0

JsonConvert.SerializeObject(myString) принимает объект возвращает строку. Если вы хотите превратить строку в объект, который хотите использовать Deserialize<T>(sting json). Учитывая, что имя аргумента в вашем примере равно myString Я бы предположил, что вы используете метод неправильно.

Для десериализации вам нужен эквивалентный тип;

public class myObject 
    { 
     public int status { get; set; } 
     public Body body { get; set; } 
    } 
    public class Body 
    { 
      //other parameters ect 
    } 

Ваша модель объекта должна точно соответствовать JSON в порядке Deserialize<T> правильно себя вести.

Смежные вопросы