不懂你什么意思。
url接口去访问数据是访问一般处理程序如果是:
把你得到list集合转成json,直接ResponseWrite(json);
不会转json,OK 引用Newtonsoft(网上下个dll)
用var json = JsonConvertSerializeObject(list);
JSON(全称为JavaScript Object Notation)
是一种轻量级的数据交换格式。它是基于JavaScript语法标准的一个子集。
JSON采用完全独立于语言的文本格式,可以很容易在各种网络、平台和程序之间传输。JSON的语法很简单,易于人阅读和编写,同时也易于机器解析和生
成。
JSON与XML的比较
◆可读性
JSON和XML的可读性相比较而言,由于XML提供辅助的标签,更加适合人阅读和理解。
◆文件大小与传输
XML允许使用方便的标签,所以文件尺寸是要比JSON大的。而且JSON源于Javascript,所以天生的主战场是Javascript与网络,在这里,JSON有着XML无法赶超的优势。
JSON语法
1 JSON 语法是 JavaScript 对象表示法语法的子集。
•数据在名称/值对中:名称是字符串,使用双引号表示。值可以是:数字(整数或浮点数),字符串(在双引号中),数组(在方括号中),对象(在花括号中),true/false/null。
•数据由逗号分隔:
•花括号保存对象:对象可以包含各种数据,包括数组。
•方括号保存数组:数字可以包含对象。
例如:
{
"employees": [
{
"firstName": "Bill",
"lastName": "Gates"
},
{
"firstName": "George",
"lastName": "Bush"
}
]
}
2 如果JSON中含有转义字符,则需要转义。例如文件路径中需要使用"\\"而不是"\"。例如:{ "file":"C:\\atxt"}。
NET *** 作JSON
JSON文件读入到内存中就是字符串,NET *** 作JSON就是生成与解析JSON字符串。 *** 作JSON通常有以下几种方式:
1 原始方式:自己按照JSON的语法格式,写代码直接 *** 作JSON字符串。如非必要,应该很少人会走这条路,从头再来的。
2 通用方式:这种方式是使用开源的类库NewtonsoftJson(下载地址>
首先楼主的json数据有问题。
下面代码亲测,可用,两个文件放在同级目录:
Testjava
public class Test {public static void main(String[] args) {
ConvertXMLtoJSON();
String jStr = "{\"users\": {\"user\": ["
+ "{\"uid\": \"1\", \"node_id\": \"2\",\"children\": [{\"id\": \"43\",\"value\": \"14\"},{\"id\": \"44\",\"value\": \"15\"}]},"
+ "{\"uid\": \"2\",\"node_id\": \"2\",\"children\": [{\"id\": \"45\",\"value\": \"11\"},{\"id\": \"46\",\"value\": \"11\"},{\"id\": \"47\",\"value\": \"16\"}]},"
+ "{\"uid\": \"3\",\"node_id\": \"2\",\"children\": {\"id\": \"48\",\"value\": \"11\"}}]}"
+ "}";
Systemoutprintln(jsontoXml(jStr));
}
public static String jsontoXml(String json) {
try {
XMLSerializer serializer = new XMLSerializer();
JSON jsonObject = JSONSerializertoJSON(json);
return serializerwrite(jsonObject);
}catch (Exception e) {
eprintStackTrace();
}
return null;
}
public static void ConvertXMLtoJSON() {
InputStream is = TestclassgetResourceAsStream("samplexml");
String xml;
try {
xml = IOUtilstoString(is);
Systemoutprintln(xml);
XMLSerializer xmlSerializer = new XMLSerializer();
JSON json = xmlSerializerread(xml);
Systemoutprintln(jsontoString(1));
}catch (IOException e) {
eprintStackTrace();
}
}
}
samplexml
<xml version="10" encoding="utf-8"><o>
<users class="object">
<user class="array">
<e class="object">
<children class="array">
<e class="object">
<id type="string">43</id>
<value type="string">14</value>
</e>
<e class="object">
<id type="string">44</id>
<value type="string">15</value>
</e>
</children>
<node_id type="string">2</node_id>
<uid type="string">1</uid>
</e>
<e class="object">
<children class="array">
<e class="object">
<id type="string">45</id>
<value type="string">11</value>
</e>
<e class="object">
<id type="string">46</id>
<value type="string">11</value>
</e>
<e class="object">
<id type="string">47</id>
<value type="string">16</value>
</e>
</children>
<node_id type="string">2</node_id>
<uid type="string">2</uid>
</e>
<e class="object">
<children class="object">
<id type="string">48</id>
<value type="string">11</value>
</children>
<node_id type="string">2</node_id>
<uid type="string">3</uid>
</e>
</user>
</users>
</o>
jar包下载地址参考:>
对比
准备数据
实体类:
定义:
使用DataContractJsonSerializer
帮助类:
用法:
输出:
使用JavaScriptSerializer
// using SystemWebScriptSerialization;
var jser = new JavaScriptSerializer();
var json = jserSerialize(new List<Person>() { p1, p2 });
var persons = jserDeserialize<List<Person>>(json);
使用Silverlight
使用JSONNET
输出:
LINQ:
其他:
输出:
一、数组转字符串
需要将数组元素用某个字符连接成字符串,示例代码如下:
var a, b;
a = new Array(0,1,2,3,4);
b = ajoin("-");
二、字符串转数组
实现方法为将字符串按某个字符切割成若干个字符串,并以数组形式返回,示例代码如下:
var s = "abc,abcd,aaa";
ss = ssplit(",");// 在每个逗号(,)处进行分解。
如果是js中遍历使用
var anObject = {one:1,two:2,three:3};//对json数组each
$each(anObject,function(name,value) {
});
如果是Java代码直接用for循环就行了,说白了json也是数组的一种,json对象和json数组都可以
//遍历json数组
String json1 = "{data:[{name:'Wallace'},{name:'Grommit'}]}";
jsonObjSplit = new JSONObject(json1);
JSONArray ja = jsonObjSplitgetJSONArray("data");
for (int i = 0; i < jalength(); i++) {JSONObject jo = (JSONObject) jaget(i);Systemoutprintln(joget("name"));}
//JSONObject遍历json对象
String json2 = "{name:'Wallace',age:15}";
jsonObj = new JSONObject(json2);
for (Iterator iter = jsonObjkeys(); iterhasNext();) {String key = (String)iternext();Systemoutprintln(jsonObj getString(Key));}
在net 20中提取这样的json
{"name":"lily","age":23,"addr":{"city":guangzhou,"province":guangdong}}
引用命名空间
using NewtonsoftJson;
using NewtonsoftJsonLinq;
可以把上面的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)JsonConvertDeserializeObject(jsonData, typeof(UserInfo));
得到City的值只要:useraddrCity;
这样实现也行
JObject jsonObj = JObjectParse(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 = jTokenGetEnumerator();
while (enumeratorMoveNext())
{
JToken jc = (JToken)enumeratorCurrent;
if (jc is JObject||((JProperty)jc)Value is JObject)
{
return GetJsonValue(jcChildren(), key);
}
else
{
if (((JProperty)jc)Name == key)
{
return ((JProperty)jc)ValueToString();
}
}
}
return null;
}
在调用的时候:
string jsonData = "{\"name\":\"lily\",\"age\":23,\"addr\":{\"city\":\"guangzhou\",\"province\":\"guangdong\"}}";
JObject jsonObj = JObjectParse(jsonData);
ResponseWrite(GetJsonValue(jsonObjChildren(), "province"));
如果有多层嵌套的数组
string jsonData = "{\"addr\":[{\"city\":\"guangzhou\",\"province\":\"guangdong\"},{\"city\":\"guiyang\",\"province\":\"guizhou\"}]}";
JObject jsonObj = JObjectParse(jsonData);
JArray jar = JArrayParse(jsonObj["addr"]ToString());
JObject j = JObjectParse(jar[0]ToString());
ResponseWrite(j["city"]);
JSON转XML
string xmlstr=((XmlDocument)JsonConvertDeserializeXmlNode(jsonData))InnerXmlToString();
以上就是关于怎么将list集合转换为json数组全部的内容,包括:怎么将list集合转换为json数组、C#怎么取带嵌套的格式一致的JSON、【高分求助】java 中 数组格式的 json 怎么转成 xml等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)