Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >当JSON字符串包含字符串和字符串数组时,Json序列化程序会出现问题

当JSON字符串包含字符串和字符串数组时,Json序列化程序会出现问题
EN

Stack Overflow用户
提问于 2012-05-08 04:45:25
回答 2查看 368关注 0票数 1

当Json字符串包含'key1:value1‘时,可以将其转换为Dictionary类型。

但在我的例子中,它还包含一个字符串数组以及上面的key:value,即:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{k1:v1; "key2\":[{\"Key11\":{\"key21\":\"Val21\",\"key22\":\"val22\"}]

( Json数据包含一些字符串和数组。)

当我使用Dictionary或Dictionary --它无法将值转换为string --无法将string转换为string[]等。

仍然可以使用Dictionary,但是有没有更好的方法来处理这个问题呢?

谢谢Phani

EN

回答 2

Stack Overflow用户

发布于 2012-05-08 16:29:25

如果您不知道编译时的结构,那么就没有其他方法来序列化JSON字符串--它必须是Dictionary。但是,如果您使用的是C# 4.0,则可以使用DynamicObject.由于动态类型将类型解析推迟到运行时,如果使用这种方法进行序列化,则可以将序列化的对象视为强类型对象(尽管没有编译时支持)。这意味着您可以使用JSON样式的点符号来访问属性:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MyDynamicJsonObject.key2

为此,您可以从DynamicObject继承,并实现TryGetMember方法(quoted from this link, which has a full implementation)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class DynamicJsonObject : DynamicObject
{
    private IDictionary<string, object> Dictionary { get; set; }

    public DynamicJsonObject(IDictionary<string, object> dictionary)
    {
        this.Dictionary = dictionary;
    }

    public override bool TryGetMember(GetMemberBinder binder, out object result)
    {
        result = this.Dictionary[binder.Name];

        if (result is IDictionary<string, object>)
        {
            result = new DynamicJsonObject(result as IDictionary<string, object>);
        }
        else if (result is ArrayList && (result as ArrayList) is IDictionary<string, object>)
        {
            result = new List<DynamicJsonObject>((result as ArrayList).ToArray().Select(x => new DynamicJsonObject(x as IDictionary<string, object>)));
        }
        else if (result is ArrayList)
        {
            result = new List<object>((result as ArrayList).ToArray());
        }

        return this.Dictionary.ContainsKey(binder.Name);
    }
}

注意,动态类型目前不支持索引器表示法,因此对于数组,您需要使用implement a workaround using notation like this

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MyDynamicJsonObject.key2.Item(0)
票数 1
EN

Stack Overflow用户

发布于 2012-05-08 17:13:06

您的示例不是有效的JSON,例如每个键和值应包含在"中,例如{"k1":"v1"},左花括号和右花括号的数量必须匹配,如果您使用\""字符进行转义,则必须添加另一个"字符,例如"key2\""

使用诸如JSONLint之类的工具来验证您的JSON是否正确。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10492672

复制
相关文章
json字符串数组转json数组
当需要把一串字符串转成一个json 数组 ,并遍历其中的内容时。 首先要导入 net.sf.json.JSONArray和net.sf.json.JSONObject 两个jar 包
全栈程序员站长
2022/06/24
5.6K0
js json字符串转json数组_string转json数组
查了很久,也实践了很多,都没有成功。网上说得最多的就是用 net.sf.json.JSONArray和net.sf.json.JSONObject 两个jar 包里面的
全栈程序员站长
2022/11/08
13.3K0
Java JSON格式字符串转JSON数组与JSON
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/10/04
3.4K0
json对象与json字符串_字符数组与字符串的区别
有时候在做项目的时候时常将这两个概念弄混淆,尤其是在使用springmvc的时候,后台@RequestBody接受的是一个json格式的字符串,一定是一个字符串。 先介绍一下json对象,首先说到对象的概念,对象的属性是可以用:对象.属性进行调用的。例如:
全栈程序员站长
2022/11/08
2K0
json字符串转换为Json对象_前端字符串转json
参考网上的文章,做了一个关于json的总结,进行留存帮助以后阅读,希望可以帮助到大家。
全栈程序员站长
2022/09/28
7.7K0
Json对象和Json字符串的区别
一、Json对象 最显著的特征:对象的值可以用 “对象.属性” 进行访问; typeOf(json对象)       ===>    Object类型 例子如下: var person={"na
跟着阿笨一起玩NET
2020/10/09
2.1K0
Json对象和Json字符串的区别
java json对象和json字符串互转的方法_java json转字符串
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/08
2.2K0
Java解析json字符串和json对象
本篇介绍的是json官方的 org.json下的 json-20200518.jar包
静谧星空TEL
2021/04/27
4.2K0
Java解析json字符串和json对象
json对象和json字符串的转化
代码如下: JSON.parse(jsonstr); //可以将json字符串转换成json对象 JSON.stringify(jsonobj); //可以将json对象转换成json对符串
用户5640963
2019/07/28
3.2K0
javascript中json对象json数组json字符串互转及取值
今天用到了json数组和json对象和json类型字符串之间互转及取值,记录一下:
kirin
2020/10/30
4.8K0
Json对象和Json字符串的区别
​ 概念:JSON(JavaScript Object Notation)一种简单的数据格式,是一种比较轻量级的数据存储格式。
用户8870853
2021/07/27
2.2K0
json数组对象转化为json字符串_js如何转数组
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/08
5.1K0
Python字符串和json类型的相互转换实例演示,python字符串转json、json转字符串
首先进行是字符串转换 json 的实例,用的 json.loads() 方法。 需要注意的是: 如果字符串里包含 \ 符号,转换会报错。
小蓝枣
2021/12/01
2.3K0
Python字符串和json类型的相互转换实例演示,python字符串转json、json转字符串
字符串与JSON
一、代码习题 1.使用数组拼接出如下字符串 ,其中styles数组里的个数不定 var prod = { name: '女装', styles: ['短款', '冬季', '春装'] }; function getTpl(data){ //todo... }; var result = getTplStr(prod); //result为下面的字符串 <dl class="product"> <dt>女装</dt> <dd>短款</dd> <dd>冬季</dd>
小胖
2018/06/27
3.2K0
Json字符串和Json对象的简单总结
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。经常在调用C#的WebService接口中,用它作为数据传输的格式。     简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序。这个字符串看起来有点儿古怪(稍后会看到几
用户1055830
2018/01/18
2K0
Json字符串和Json对象的简单总结
js如何将json字符串转成json对象_前端json字符串转json对象
JSON字符串: var str1 = ‘{ “name”: “cxh”, “sex”: “man” }’; JSON对象: var str2 = { “name”: “cxh”, “sex”: “man” };
全栈程序员站长
2022/11/08
9.4K0
js中JSON对象字符串转数组
这个数组包含在JavaScript的帮助下从JSON字符串中获得的JavaScript对象的值。解决这一问题的方法有两种:
IT工作者
2021/12/29
8.7K0
【说站】php数组转json字符串
(2)创建类,初始化是赋值,魔法方法将对象转换字符串格式,然后使用json_encode()函数;
很酷的站长
2022/11/23
2.9K0
【说站】php数组转json字符串
Map转成JSON字符串,对象转成JSON字符串,JSON.toJSONString()全解决
我们在开发中难免和JSON打交道,这不小编最近遇到了。需要把一些信息转成JSON字符串,然后保存到数据库中。想到两种方式,一是新建实体类,然后转化为JSON,小编比较懒,直接Map多香呀!我们直接只有阿里巴巴的fastjson来进行转化即可,很方便!
掉发的小王
2022/07/11
2.9K0
Map转成JSON字符串,对象转成JSON字符串,JSON.toJSONString()全解决
c语言解析json字符串(json对象转化为字符串)
如题,根据json字符串的难易程度,C#提供的对应解析方法也不同,现做简单的归类总结:
全栈程序员站长
2022/07/31
2K0

相似问题

当数组已包含JSON字符串时,将数组转换为JSON字符串

30

当数组可以包含字符串或复杂对象时,反序列化Json?

10

构建包含JSON字符串数组的JSON字符串

20

JSON解析字符串数组时出现问题

10

当json字符串包含\\b时,json_decode失败

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文