我这里有一段json数据,但是其中有的值本身就是{}或者是"",就会处理失败
这是json数据,/*
 * JSON File
 * 
 * This comment may need to be removed for proper parsing
 */
{"exp":203970,
"user":{"pf":1,
"healthMode":{"set":0,"valid":0,"canClose":1,"time":"08|00","date":"1970-01-01|1970-01-07","serverTime":1292320951,"beginTime":0,"endTime":547200}},
"farmlandStatus":[
{"a":22,"b":5,"c":0,"d":0,"e":1,"f":0,"g":0,"h":1,"i":100,"j":2,"k":0,"l":0,"m":0,"o":0,"p":{},"q":1292209906,"r":0,
"bitmap":1,"pId":0,"n":{}},{"a":22,"b":5,"c":0,"d":0,"e":1,"f":0,"g":0,"h":1,"i":100,"j":2,"k":0,"l":0,"m":0,"o":0,"p":{},"q":1292209906,"r":0,
"bitmap":1,"pId":0,"n":{}},{"a":40,"b":6,"c":0,"d":0,"e":1,"f":0,"g":0,"h":1,"i":100,"j":0,"k":27,"l":16,"m":16,"o":0,"p":{},"q":1292285611,"r":0,
"bitmap":1,"pId":0,
"n":{"1228265397":1,"646613677":1,"32439087":1,"328166380":1,"1062625755":1,"453977776":1,"544431356":1,"272450724":1}},{"a":40,"b":6,"c":0,"d":0,"e":1,"f":0,"g":0,"h":1,"i":100,"j":0,"k":29,"l":17,"m":17,"o":0,"p":{},"q":1292285610,"r":0,
"bitmap":1,"pId":0,
"n":{"1228265397":1,"646613677":1,"32439087":1,"328166380":1,"1062625755":1,"453977776":1,"544431356":1,"272450724":1}},{"a":40,"b":6,"c":0,"d":0,"e":1,"f":0,"g":0,"h":1,"i":100,"j":0,"k":29,"l":17,"m":17,"o":0,"p":{},"q":1292285607,"r":0,
"bitmap":1,"pId":0,
"n":{"1228265397":1,"646613677":1,"32439087":1,"328166380":1,"1062625755":1,"453977776":1,"544431356":1}},{"a":40,"b":6,"c":0,"d":0,"e":1,"f":0,"g":0,"h":1,"i":100,"j":0,"k":27,"l":16,"m":16,"o":0,"p":{},"q":1292285607,"r":0,
"bitmap":1,"pId":0,
"n":{"1228265397":1,"646613677":1,"32439087":1,"328166380":1,"1062625755":1,"453977776":1,"544431356":1}},{"a":165,"b":5,"c":0,"d":0,"e":1,"f":0,"g":0,"h":1,"i":100,"j":2,"k":0,"l":0,"m":0,"o":0,"p":{},"q":1292220706,"r":0,
"bitmap":1,"pId":0,"n":{}},{"a":40,"b":6,"c":0,"d":0,"e":1,"f":0,"g":0,"h":1,"i":100,"j":0,"k":27,"l":16,"m":16,"o":0,"p":{},"q":1292285609,"r":0,
"bitmap":1,"pId":0,
"n":{"1228265397":1,"646613677":1,"32439087":1,"328166380":1,"1062625755":1,"453977776":1}},{"a":22,"b":5,"c":0,"d":0,"e":1,"f":0,"g":0,"h":1,"i":100,"j":2,"k":0,"l":0,"m":0,"o":0,"p":{},"q":1292209906,"r":0,
"bitmap":1,"pId":0,"n":{}},{"a":165,"b":5,"c":0,"d":0,"e":1,"f":0,"g":0,"h":1,"i":100,"j":1,"k":0,"l":0,"m":0,"o":0,"p":{},"q":1292220706,"r":0,
"bitmap":1,"pId":0,"n":{}},{"a":241,"b":5,"c":0,"d":0,"e":1,"f":0,"g":0,"h":1,"i":100,"j":1,"k":0,"l":0,"m":0,"o":0,"p":{},"q":1292224306,"r":0,
"bitmap":1,"pId":0,"n":{}},{"a":40,"b":6,"c":0,"d":0,"e":1,"f":0,"g":0,"h":1,"i":100,"j":0,"k":27,"l":16,"m":16,"o":0,"p":{},"q":1292285606,"r":0,
"bitmap":1,"pId":0,
"n":{"1228265397":1,"646613677":1,"32439087":1,"328166380":1,"1062625755":1,"453977776":1,"544431356":1,"272450724":1}},{"a":40,"b":6,"c":0,"d":0,"e":1,"f":0,"g":0,"h":1,"i":100,"j":0,"k":29,"l":17,"m":20,"o":0,"p":{},"q":1292285605,"r":0,
"bitmap":1,"pId":0,
"n":{"1228265397":1,"646613677":1,"32439087":1,"328166380":1,"1062625755":1,"453977776":1,"544431356":1,"272450724":1,"223709184":1,"65925964":1,"651825786":1}},{"a":40,"b":6,"c":0,"d":0,"e":1,"f":0,"g":0,"h":1,"i":100,"j":0,"k":29,"l":17,"m":17,"o":0,"p":{},"q":1292285605,"r":0,
"bitmap":1,"pId":0,
"n":{"1228265397":1,"646613677":1,"32439087":1,"328166380":1,"1062625755":1,"453977776":1,"544431356":1,"272450724":1,"223709184":1}},{"a":40,"b":6,"c":0,"d":0,"e":1,"f":0,"g":0,"h":1,"i":100,"j":0,"k":29,"l":17,"m":18,"o":0,"p":{},"q":1292285604,"r":0,
"bitmap":1,"pId":0,
"n":{"1228265397":1,"646613677":1,"32439087":1,"328166380":1,"1062625755":1,"453977776":1,"544431356":1,"272450724":1,"223709184":1,"65925964":1,"651825786":1}},{"a":118,"b":4,"c":0,"d":0,"e":1,"f":0,"g":0,"h":1,"i":100,"j":0,"k":0,"l":0,"m":0,"o":3,"p":{},"q":1292239209,"r":0,
"bitmap":1,"pId":0,"n":{}},{"a":40,"b":6,"c":0,"d":0,"e":1,"f":0,"g":0,"h":1,"i":100,"j":0,"k":29,"l":17,"m":17,"o":0,"p":{},"q":1292285605,"r":0,
"bitmap":1,"pId":0,"n":{"1228265397":1,"646613677":1,"32439087":1,"328166380":1,"1062625755":1,"453977776":1}},{"a":40,"b":6,"c":0,"d":0,"e":1,"f":0,"g":0,"h":1,"i":100,"j":0,"k":25,"l":15,"m":15,"o":0,"p":{},"q":1292285709,"r":0,
"bitmap":0,"pId":0,
"n":{"1228265397":1,"646613677":1,"32439087":1,"328166380":1,"1062625755":1,"453977776":1,"544431356":1,"272450724":1,"223709184":1}}],
"items":{"1":{"itemId":1},"9":{"itemId":90013},"10":{"itemId":514915}},
"dog":{"dogId":3,"isHungry":1},"bison":{"mapDrivers":{},"id":0,"type":0,"powerLevel":0,"lastEatTime":0,"hungerLevel":0,"alreadyEat":0,"ownerid":0},"isBison":0,"isBisonInHome":0}这是我用的json类,using System.Collections.Generic;
using System.Text;
using System;
namespace crazyFarmer
{
    public class JsonObjectModel
    {
        protected string _GetKey(string rawjson)
        {
            if (string.IsNullOrEmpty(rawjson))
                return rawjson;            rawjson = rawjson.Trim();            string[] jsons = rawjson.Split(new char[] { ':' });            if (jsons.Length < 2)
                return rawjson;            return jsons[0].Replace("\"", "").Trim();
        }        protected string _GetValue(string rawjson)
        {
            if (string.IsNullOrEmpty(rawjson))
                return rawjson;            rawjson = rawjson.Trim();            string[] jsons = rawjson.Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries);            if (jsons.Length < 2)
                return rawjson;            StringBuilder builder = new StringBuilder();            for (int i = 1; i < jsons.Length; i++)
            {
                builder.Append(jsons[i]);                builder.Append(":");
            }            if (builder.Length > 0)
                builder.Remove(builder.Length - 1, 1);            string value = builder.ToString();            if (value.StartsWith("\""))
                value = value.Substring(1);            if (value.EndsWith("\""))
                value = value.Substring(0, value.Length - 1);            return value;
        }        protected List<string> _GetCollection(string rawjson)
        {
            //[{},{}]             List<string> list = new List<string>();            if (string.IsNullOrEmpty(rawjson))
                return list;            rawjson = rawjson.Trim();            StringBuilder builder = new StringBuilder();            int nestlevel = -1;            int mnestlevel = -1;            bool strlevel =false;
            for (int i = 0; i < rawjson.Length; i++)
            {
                char jsonchar = rawjson[i];
                if (i == 0)
                    continue;
                else if (i == rawjson.Length - 1)
                {
                    if (jsonchar == '}' || jsonchar == ']')
                        continue;
                }                if (jsonchar == '{')
                {
                    nestlevel++;
                }                if (jsonchar == '}')
                {
                    nestlevel--;
                }                if (jsonchar == '[')
                {
                    mnestlevel++;
                }                if (jsonchar == ']')
                {
                    mnestlevel--;
                }                if (i == 438)
                { 
                }
                if (jsonchar == '"') strlevel = (!strlevel);
                if (jsonchar == ',' && nestlevel == -1 && mnestlevel == -1 && !strlevel)
                {
                    list.Add(builder.ToString());                    builder = new StringBuilder();
                }
                else
                {
                    builder.Append(jsonchar);
                }
            }            if (builder.Length > 0)
                list.Add(builder.ToString());            return list;
        }
    }
}谁恩那个帮忙修改下这个类,或者有其他更好的解决方法

解决方案 »

  1.   

    .net 3.5支持JSON序列化
    引用程序集 System.Data.Entity
    using System.Runtime.Serialization.Json;public static string ToJson(object source)
    {
    Type type = source.GetType();
    DataContractJsonSerializer serilializer = new DataContractJsonSerializer(type);
    using (Stream stream = new MemoryStream())
    {
    serilializer.WriteObject(stream, source);
    stream.Flush();
    stream.Position = 0;
    StreamReader reader = new StreamReader(stream);
    return reader.ReadToEnd();
    }
    }
    public static object ParseJSON(string jsonStr, Type type)
    {
    using (MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(jsonStr)))
    {
    DataContractJsonSerializer serializer = new DataContractJsonSerializer(type);
    return serializer.ReadObject(ms);
    }
    }
      

  2.   

    忘记说了,.net 2.0 的开发环境
      

  3.   

    .net2.0?
    还是换个3.5吧.人家都用4了.
    老了不成了.