安装jsonnet控件,并using NewtonsoftJsonLinq;
这样就可以获取想要的tag对应的内容了。
string text = "renderReverse&&renderReverse({\"status\":0,\"result\":{\"location\":{\"lng\":11632298703399,\"lat\":39983424051248},\"formatted_address\":\"北京市海淀区中关村大街27号1101-08室\",\"business\":\"中关村,人民大学,苏州街\",\"addressComponent\":{\"city\":\"北京市\",\"country\":\"中国\",\"direction\":\"附近\",\"distance\":\"7\",\"district\":\"海淀区\",\"province\":\"北京市\",\"street\":\"中关村大街\",\"street_number\":\"27号1101-08室\",\"country_code\":0},\"pois\":[{\"addr\":\"北京北京海淀海淀区中关村大街27号(地铁海淀黄庄站A1\",\"cp\":\"NavInfo\",\"direction\":\"内\",\"distance\":\"0\",\"name\":\"北京远景国际公寓(中关村店)\",\"poiType\":\"房地产\",\"point\":{\"x\":1163229458916,\"y\":39983610361549},\"tag\":\"房地产\",\"tel\":\"\",\"uid\":\"35a08504cb51b1138733049d\",\"zip\":\"\"},{\"addr\":\"海淀区中关村北大街27号\",\"cp\":\"NavInfo\",\"direction\":\"附近\",\"distance\":\"25\",\"name\":\"中关村大厦\",\"poiType\":\"房地产\",\"point\":{\"x\":11632285606105,\"y\":39983568897877},\"tag\":\"房地产;写字楼\",\"tel\":\"\",\"uid\":\"06d2dffdaef1b7ef88f15d04\",\"zip\":\"\"},{\"addr\":\"中关村大街29\",\"cp\":\"NavInfo\",\"direction\":\"北\",\"distance\":\"62\",\"name\":\"海淀医院激光整形美容部\",\"poiType\":\"医疗\",\"point\":{\"x\":11632317046798,\"y\":39983016046485},\"tag\":\"医疗;专科医院\",\"tel\":\"\",\"uid\":\"b1c556e81f27cb71b4265502\",\"zip\":\"\"},{\"addr\":\"中关村大街27号中关村大厦1层\",\"cp\":\"NavInfo\",\"direction\":\"附近\",\"distance\":\"1\",\"name\":\"中国人民财产保险中关村营业部\",\"poiType\":\"金融\",\"point\":{\"x\":11632298182382,\"y\":39983416864194},\"tag\":\"金融;投资理财\",\"tel\":\"\",\"uid\":\"060f5e53137d20d7081cc779\",\"zip\":\"\"},{\"addr\":\"北京市海淀区\",\"cp\":\"NavInfo\",\"direction\":\"东北\",\"distance\":\"58\",\"name\":\"北京市海淀医院-输血科\",\"poiType\":\"医疗\",\"point\":{\"x\":116322685383,\"y\":39983092063819},\"tag\":\"医疗;其他\",\"tel\":\"\",\"uid\":\"cf405905b6d82eb9b55f1e89\",\"zip\":\"\"},{\"addr\":\"北京市海淀区中关村大街27号中关村大厦二层\",\"cp\":\"NavInfo\",\"direction\":\"附近\",\"distance\":\"0\",\"name\":\"眉州东坡酒楼(中关村店)\",\"poiType\":\"美食\",\"point\":{\"x\":11632298182382,\"y\":39983423774823},\"tag\":\"美食\",\"tel\":\"\",\"uid\":\"2c0bd6c57dbdd3b342ab9a8c\",\"zip\":\"\"},{\"addr\":\"北京市海淀区中关村大街29号(海淀黄庄路口)\",\"cp\":\"NavInfo\",\"direction\":\"东北\",\"distance\":\"223\",\"name\":\"海淀医院\",\"poiType\":\"医疗\",\"point\":{\"x\":11632199368776,\"y\":39982083099537},\"tag\":\"医疗;综合医院\",\"tel\":\"\",\"uid\":\"fa01e9371a040053774ff1ca\",\"zip\":\"\"},{\"addr\":\"北京市海淀区中关村大街28号\",\"cp\":\"NavInfo\",\"direction\":\"西北\",\"distance\":\"229\",\"name\":\"海淀剧院\",\"poiType\":\"休闲娱乐\",\"point\":{\"x\":11632476945179,\"y\":39982622137118},\"tag\":\"休闲娱乐;**院\",\"tel\":\"\",\"uid\":\"edd64ce1a6d799913ee231b3\",\"zip\":\"\"},{\"addr\":\"海淀黄庄地铁站旁\",\"cp\":\"NavInfo\",\"direction\":\"西北\",\"distance\":\"375\",\"name\":\"中发电子市场(中关村大街)\",\"poiType\":\"购物\",\"point\":{\"x\":11632529945204,\"y\":39981537146849},\"tag\":\"购物;家电数码\",\"tel\":\"\",\"uid\":\"69130523db34c811725e8047\",\"zip\":\"\"},{\"addr\":\"北京市海淀区知春路128号\",\"cp\":\"NavInfo\",\"direction\":\"西北\",\"distance\":\"434\",\"name\":\"泛亚大厦\",\"poiType\":\"房地产\",\"point\":{\"x\":11632600013033,\"y\":39981516414381},\"tag\":\"房地产;写字楼\",\"tel\":\"\",\"uid\":\"d24e48ebb9991cc9afee7ade\",\"zip\":\"\"}],\"poiRegions\":[],\"sematic_description\":\"北京远景国际公寓(中关村店)内0米\",\"cityCode\":131}})";
//只保留Json内容
text = textRemove(textLength - 1)Remove(0, 29);
JObject jo = (JObject)NewtonsoftJsonJsonConvertDeserializeObject(text);
//获取指定TAG的内容
MessageBoxShow(jo["result"]["addressComponent"]["district"]ToString());
需要准备的材料分别是:电脑、php编辑器、浏览器。
1、首先,打开php编辑器,新建php文件,例如:indexphp,填充问题基础代码。
2、在indexphp中,输入代码:
$b = json_decode($a);
echo $b->content->location->lat;
echo ',';
echo $b->content->location->lng;
3、浏览器运行indexphp页面,此时lng和lat的值都被打印了出来。
>
我很好奇,不知道key值的情况下取到某一个value值?
那个某一个值是不是已经知道了,为什么还要在json里查找呢?
你是要用某一个值查找对应的key吗?
这里key应该是唯一的,但是值是唯一的吗?
如果值是唯一的,或者只想找到第一个对应的值,那么遍历的时候查找到第一个就可以跳出循环。
如果值不是唯一的,那么需要完整的遍历一遍吧。
你的json格式有点问题,应该是不完整且键名不能相同。
下面我写了个相同的程序,希望能符合你的要求,代码如下:
public class KeysInfo {public KeysInfo() { }
[JsonIgnore]
public string Test { get; set; }
public MyKeys[] mykeys{ get; set; }
}
public class MyKeys
{
public string key0{ get; set; }
public string key1 { get; set; }
public string key2 { get; set; }
public string key3 { get; set; }
public string key4 { get; set; }
public string key5 { get; set; }
public string key6 { get; set; }
public string key7 { get; set; }
}
class Program
{
static void Main(string[] args)
{
string myJson = "{\"Test\":\"2015\",\"MyKeys\":[{\"key0\":\"a\",\"key1\":\"b\",\"key2\":\"c\",\"key3\":\"d\"},{\"key4\":\"aa\",\"key5\":\"bb\",\"key6\":\"cc\",\"key7\":\"dd\"}]}";
// 反序列化json对象
KeysInfo des = JsonConvertDeserializeObject<KeysInfo>(myJson);
if (IsExist(des, "key4", "aa")) ConsoleWriteLine("存在\n");
else ConsoleWriteLine("不存在\n");
ConsoleReadKey(true);
}
public static bool IsExist(KeysInfo keyInfo, string keyName, string keyValue)
{
for (int i = 0; i < keyInfomykeysCount(); i++)
{
// 反射KeysInfo类的属性以及值
foreach (SystemReflectionPropertyInfo pi in keyInfomykeys[i]GetType()GetProperties())
{
if (piName == keyName && (piGetValue(keyInfomykeys[i])!=null
&&piGetValue(keyInfomykeys[i])ToString() == keyValue))
return true; // 给定的键名与值存在于json对象
}
}
return false; // 给定的键名与值不存在于json对象
}
}
使用JSON从后台向前台传输数据的时候,当数据本身含有一些特殊字符,会导致JSON数据的解析出错。
使用下面的方法对即将向前台输出的json字符串进行处理,可以解决键盘上能输入的所有特殊字符问题。
//当文本中含有如下特殊字符时,此方法可以成功处理,让其在前台被正确解析,注意:此法不能处理单引号
public static String stringToJson(String s) {
StringBuffer sb = new StringBuffer ();
for (int i=0; i<slength(); i++) {
char c = scharAt(i);
switch (c) {
case '\"':
sbappend("\\\"");
break;
// case '\\': //如果不处理单引号,可以释放此段代码,若结合下面的方法处理单引号就必须注释掉该段代码
// sbappend("\\\\");
// break;
case '/':
sbappend("\\/");
break;
case '\b': //退格
sbappend("\\b");
break;
case '\f': //走纸换页
sbappend("\\f");
break;
case '\n':
sbappend("\\n"); //换行
break;
case '\r': //回车
sbappend("\\r");
break;
case '\t': //横向跳格
sbappend("\\t");
break;
default:
sbappend(c);
}}
return sbtoString();
}
//注意,下面的方法是在把你的数据文本接入json数据字符串之前使用,预先对文本做处理后在接入JSON字符串
//处理文本中的单引号 和 斜杠
public static String StringDanYinToJSON(String ors) {
ors = ors == null "" : ors;
StringBuffer buffer = new StringBuffer(ors);
int i = 0;
while (i < bufferlength()) {
if (buffercharAt(i) == '\'' || buffercharAt(i) == '\\') {
bufferinsert(i, '\\');
i += 2;
} else {
i++;
}
}
return buffertoString();
}
json中取出对象的属性值步骤如下:
1、打开vscode,创建一个测试页面JsonTesthtml,用于演示在js中如何获取json对象的属性集合。
2、在测试页面中,定义一个js变量,将其赋值为json格式的字符串,用于模拟从后台返回过来的json字符串值,以及后续转换为json对象,和获取其属性集合。var json = "[{\"Col1\": \"Hello\", \"Col2\": \"World\"}, {\"Col1\": \"您好\", \"Col2\": \"世界\"}]"。
3、使用js的eval函数,将json字符串的变量值,转换为json对象。var $json = eval("(" + json + ")");
4、得到json对象之后,使用for-in循环语句,得到json对象的序号,也就是,这个json对象中,还有多少个子对象。
5、因为js是弱类型的语言,并不要求json对象中的每个子对象属性都一样。所以,在得到序号之后,使用Objectkeys($json[i]); 就能获取到当前json子对象的属性集合。
6、如果想要获取到json对象的每个具体的列名和值,就需要再加一个for循环,遍历列名,得到列名和值。
以上就是关于C#语言,从百度地图反向地理编码api返回的json数据中提取信息全部的内容,包括:C#语言,从百度地图反向地理编码api返回的json数据中提取信息、请教php大神,如何提取一个json数据里的某值、用C语言解析JSON数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)