将json字符串的一部分转换为数组或列表或字典?

时间:2012-12-22 11:02:13

标签: c# json.net

我有一个由网页提取的json string。 json的架构是这样的:

string schema = @"{
    'description': 'A person',
    'type': 'object',
    'properties':
    {
        'error': 
        {
            'type': 'object',
            'properties': 
            {
                'code': { 'type': 'integer' },
                'message': { 'type': 'string' }
            }
        },
        'response':
        {
            'type': 'object',
            'properties':
            {
                'code': { 'type': 'integer' },
                'status': { 'type': 'string' },
                'message': { 'type': ['string', 'object'] , 'items': {'type': 'string'}}
            }
        }
    }
}";

一切都很好,json现在有效。

目前,我想将json string的一部分转换为array以循环抛出它并将数据放入网格。

我告诉的部分是这样的:

[{\"id\":\"1\",\"task\":\"some message here...\",\"sender\":\"123qwe\",\"time\":\"1356136733\"}, [{\"id\":\"1\",\"task\":\"some message here...\",\"sender\":\"123qwe\",\"time\":\"1356136733\"}, ....

要访问它,我使用它:

var messages = (string)o["response"]["message"];//o is a JObject

提前致谢!

1 个答案:

答案 0 :(得分:0)

我通过使用动态类型来解决这个问题......:

var jsonSerializer = new JsonSerializer();
                dynamic stuff = jsonSerializer.Deserialize(new JsonTextReader(new StringReader(json)));
                var ffff = stuff.response.message;

                var jss = new JsonSerializer();
                dynamic st = jsonSerializer.Deserialize(new JsonTextReader(new StringReader((string)ffff)));

                var bv = 0;
                foreach (var msg in st)
                {
                    bv++;
                }