❶ 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解析工具