❶ vc如何读取json
JSON C++版(http://blog.beef.de/2008/01/04/tinyjson/)
可以到官方网站上看实例
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。
JSON建构于两种结构:
1. “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
2. 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。
JSON的格式
值:
user = {name:"某某某",extinfo : { sex : "男" , age : 22 }}
结果:
user.name = "某某某"
user.extinfo.sex = "男"
user.extinfo.age = 22
❷ JAVA Json 嵌套解析
{"user_get_response":{"user":{
"buyer_credit":{
"good_num":0,
"level":0,
"score":0,
"total_num":0
},
"created":"2009-09-30 13:15:54",
"last_visit":"2009-12-22 13:31:58",
"location":{},
"nick":"sandbox_c_23",
"seller_credit{
"good_num":0,
"level":0,
"score":0,
"total_num":0
}
}}}
String json = readJSONString(request);
JSONObject jsonObject = null;
String responseText = null;
String
try {
jsonObject = new JSONObject(json);
String user_get_response=jsonObject.getString("user_get_response");
JSONObject jsonObject_1=new JSONObject(user_get_response);
String user=jsonObject_1.getString("user");
JSONObject jsonObject_2=new JSONObject(user);
....
}
依次类推
❸ C#如何解析嵌套json字符串
在.net 2.0中提取这样的json
{"name":"lily","age":23,"addr":{"city":guangzhou,"province":guangdong}}
引用命名空间
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
可以把上面的JSON看成一个对象.你只要写对应的类即可
public class UserInfo
{
public string name;
public int age;
public address addr;
}
public class address
{
public string city;
public string province;
}
然后在解析的地方这样写:
string jsonData="{\"name\":\"lily\",\"age\":23,\"addr\":{\"city\":guangzhou,\"province\":guangdong}}";
UserInfo user=(UserInfo)JsonConvert.DeserializeObject(jsonData, typeof(UserInfo));
得到City的值只要:user.addr.City;
这样实现也行
JObject jsonObj = JObject.Parse(jsonData);
string name=jsonObj ["name"].ToString();
string age=jsonObj ["age"].ToString();
string city=((JObject )jsonObj ["addr"])["city"].ToString();
string province=((JObject )jsonObj ["addr"])["province"].ToString();
如 何这个json是动态的呢?譬如让你输入一个json,如{"name":"lily","age":23,"addr": {"city":guangzhou,"province":guangdong}}; 然后让你输入一个对象,如city,然后系统会输出guangzhou这个值,那这样的话,json就是动态生成的了,我想了解有没有读取这样的json 的方法。(注意,json是多级嵌套的。)
就用遍历
public string GetJsonValue(JEnumerable<JToken> jToken,string key)
{
IEnumerator enumerator = jToken.GetEnumerator();
while (enumerator.MoveNext())
{
JToken jc = (JToken)enumerator.Current;
if (jc is JObject||((JProperty)jc).Value is JObject)
{
return GetJsonValue(jc.Children(), key);
}
else
{
if (((JProperty)jc).Name == key)
{
return ((JProperty)jc).Value.ToString();
}
}
}
return null;
}
在调用的时候:
string jsonData = "{\"name\":\"lily\",\"age\":23,\"addr\":{\"city\":\"guangzhou\",\"province\":\"guangdong\"}}";
JObject jsonObj = JObject.Parse(jsonData);
Response.Write(GetJsonValue(jsonObj.Children(), "province"));
如果有多层嵌套的数组
string jsonData = "{\"addr\":[{\"city\":\"guangzhou\",\"province\":\"guangdong\"},{\"city\":\"guiyang\",\"province\":\"guizhou\"}]}";
JObject jsonObj = JObject.Parse(jsonData);
JArray jar = JArray.Parse(jsonObj["addr"].ToString());
JObject j = JObject.Parse(jar[0].ToString());
Response.Write(j["city"]);
JSON转XML
string xmlstr=((XmlDocument)JsonConvert.DeserializeXmlNode(jsonData)).InnerXml.ToString();
❹ 在C++中jsonlib如何多级解析
使用C++和别的语言做交互比较常用的一种数据操作方式就是json。
解析json数据
void TranslateJson(const string strData)
{
// 解析json用Json::Reader
Json::Reader *readerinfo = new Json::Reader(Json::Features::strictMode());
// Json::Value是一种很重要的类型,可以代表任意类型。如int, string, object, array...
Json::Value root;
if (readerinfo->parse(strData, root))
{
if (root["id"].isInt())
{
int nID = root["id"].asInt();
}
if (root["time"].isString())
{
std::string strTime = root["time"].asString();
}
if (root["data"]["count"].isInt())
{
int nDataCount = root["data"]["count"].asInt();
}
if (root["data"]["name"].isString())
{
std::string strDataName = root["data"]["name"].asString();
}
}
::delete readerinfo;
readerinfo = NULL;
}
❺ 如何解析这种嵌套格式的JSON字符串
解析的步骤其实也很简单.
首先通过JSONArray的对象获得全部的数据的数组,
JSONArray array = new JSONArray(json);
饭否的例子专, 就是所有发言的信息属. 但是饭否的每一条发言的信息中, 都嵌套一个用户信息的JSON的字符串.
所以在取得每一条的发言的信息的时候, 需要再取一次这个以user为标记的JSON字符串.
JSONObject object = array.getJSONObject(i);
//获取嵌套的JSON串
String users = object.getString("user");
//将获取的嵌套的JSON串,再解释一次, 得到可使用的对象.
JSONObject user = new JSONObject(users);
❻ 小弟最近在做Json解析,在VC++利用json cpp 对json串解析,但是不知道如何解析如下所示JSON字符串,求助
JSON格式错误。
如果不是字符串内的引号,请不要在引号前加反斜杠。
请参考json,.org
❼ 像这种嵌套格式的json怎么解析
涉及的技术是“.net json 序列化”,可以用网络搜索一下。
.NET Framewok 3.5也提供了JSON对象序列化和反序列化的类,这就是System.Runtime.Serialization.Json 命名空间下的 DataContractJsonSerializer 类。利用这个类,可以实现JSON对象的序列化和反序列化。
如果是之前的.net版本,一般可以借助第三方类库来处理,例如Json.NET 或 LitJSON
思想就是先定义类,再使用类库将对象和json格式的字符串进行相互转化(序列化和反序列化)
你的情况需要先定义一个plan类:{"plan_id":17,"oneday_id":83,"daynum":1,"type":4,"pid":0,"counts":1}
再定义一个命令类(如cmd),包括:doadd、doedit、dodel三个List<plan>对象
最后使用类库将对象将string解析为cmd对象
❽ json多层集合嵌套解析求助
首先楼上说的部分是对的。那么我先假设你已经获得了这个字符串,将之定义为jsonString.
JSONObject jsonObject = new JSONObject(jsonString);
然后,根据嵌套的种类,可以确定下一步如何取值。根据你的情况来看。应该是:
String user_get_response = jsonObject.getString("user_get_response");
JSONObject user_get_response_obj = new JSONObject(user_get_response);
这是针对第一层嵌套的。
一层一层的取下去就好。如果是数组类型的,就用JSONArray来接收。
JSONArray jsonArray = new JSONArray(jsonObject.getString("xxx"));
总之就是由外到内去解析就好
❾ C++ 解析json数据
网上有开源的解析函数
jsoncpp
官方网址 jsoncpp.sourceforge.net
里面有代码可以解析json
另外vs2012也支持boost
boost库里面也有json解析工具