我这里有一段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;
}
}
}谁恩那个帮忙修改下这个类,或者有其他更好的解决方法
这是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;
}
}
}谁恩那个帮忙修改下这个类,或者有其他更好的解决方法
引用程序集 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);
}
}
还是换个3.5吧.人家都用4了.
老了不成了.