首页 新闻 会员 周边

JSON解析类,大神帮忙解析下,求代码!谢谢啊

0
悬赏园豆:50 [已解决问题] 解决于 2013-08-29 13:38

VER=1.0&MSG=10224&WPARAM=140068440&LPARAM=278&DATA={"data":{"x":{"precision":2,"subtype":"","type":"array","unit":"  ","value":[-23.93000030517578]},"y":{"precision":2,"subtype":"","type":"array","unit":"  ","value":[-8.890000343322754]}},"devtype":"DAIS","msg":"multidata","netid":1128,"nodid":2501,"nvsid":2001181,"version":2}

&

小..布丁的主页 小..布丁 | 初学一级 | 园豆:113
提问于:2013-08-28 09:59
< >
分享
最佳答案
1

Js:

var DATA='[{"data":{"x":{"precision":2,"subtype":"","type":"array","unit":"  ","value":[-23.93000030517578]},"y":{"precision":2,"subtype":"","type":"array","unit":"  ","value":[-8.890000343322754]}},"devtype":"DAIS","msg":"multidata","netid":1128,"nodid":2501,"nvsid":2001181,"version":2}]';
eval(DATA);
收获园豆:50
幻天芒 | 高人七级 |园豆:37175 | 2013-08-28 10:18

首先你的DATA后面,不是完整的json格式。需要不全中括号,然后在C#中用自带的或第三方控件,处理好即可。

FastJson,LitJson,Json.Net等

幻天芒 | 园豆:37175 (高人七级) | 2013-08-28 13:06
其他回答(3)
0

用什么编程语言解析?

dudu | 园豆:30994 (高人七级) | 2013-08-28 10:20

c#

支持(0) 反对(0) 小..布丁 | 园豆:113 (初学一级) | 2013-08-28 10:37

@小..布丁: 用Json.NET可以轻松搞定

支持(0) 反对(0) dudu | 园豆:30994 (高人七级) | 2013-08-28 10:40
0

这个有好多插件可以用的,把字符串变成对象。

如:http://www.cnblogs.com/pen-ink/archive/2011/10/06/2199715.html

其它的没有什么好解析的

json结构很简单。
一对”[]“表示一个数组,“[]”中间每一个“{}"都是数组的一个元素。
{}表示一个对象,{}内每一个":"和其前后组成对象的一个属性:”属性:属性值“
比如上面的”Uid:用户编号“就是他外层{}的一个属性。
属性的值还可以是对象或数组,比如上面的:Content:[..........] 或者Content:{..........}

Albert Fei | 园豆:2102 (老鸟四级) | 2013-08-28 10:36
0

如果你用 .NET 3.5 及以上的版本可以用这两个方法。.NET 3.5 以后微软已经加入了解析 Json 的功能。在命名空间 System.Runtime.Serialization.Json 下。

/// <summary>
/// 将对象转换成 JSON 文本。
/// </summary>
/// <param name="obj">要转换的对象。</param>
/// <returns></returns>
public string ConvertObjectToJson(object obj)
{
    string jsonText = string.Empty;
    if (obj != null)
    {
        DataContractJsonSerializer dataContractJsonSerializer = new DataContractJsonSerializer(obj.GetType());
        MemoryStream memoryStream = new MemoryStream();
        dataContractJsonSerializer.WriteObject(memoryStream, obj);
        jsonText = Encoding.UTF8.GetString(memoryStream.ToArray());
        memoryStream.Close();
    }
    return jsonText;
}

/// <summary>
/// 将 JSON 文本转换成对象。
/// </summary>
/// <typeparam name="T">对象的类型。</typeparam>
/// <param name="jsonText">JSON 文本。</param>
/// <returns></returns>
public T ConvertJsonToObject<T>(string jsonText)
{
    T obj = default(T);
    if (!string.IsNullOrEmpty(jsonText))
    {
        DataContractJsonSerializer dataContractJsonSerializer = new DataContractJsonSerializer(typeof(T));
        MemoryStream memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(jsonText));
        obj = (T)dataContractJsonSerializer.ReadObject(memoryStream);
    }
    return obj;
}
guwoow | 园豆:611 (小虾三级) | 2013-08-28 11:12

using System.Runtime.Serialization.Json;    引用这出错。

支持(0) 反对(1) 小..布丁 | 园豆:113 (初学一级) | 2013-08-28 11:35

@小..布丁: 项目必须是 .NET 3.5 或者 .NET 3.5 以上的版本。你看一下你项目是不是 3.5 的。

支持(0) 反对(0) guwoow | 园豆:611 (小虾三级) | 2013-08-28 11:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册