Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正则表达式更改JSON字符串中的属性顺序?_C#_Regex_Json_Facebook - Fatal编程技术网

C# 正则表达式更改JSON字符串中的属性顺序?

C# 正则表达式更改JSON字符串中的属性顺序?,c#,regex,json,facebook,C#,Regex,Json,Facebook,使用Facebook搜索API,我得到了如下回复: "data" : [ { "created_time" : "2010-07-24T19:47:31+0000", "description" : "...", "icon" : "...", "id" : "1", "link" : "...", "name" : "...", "type" : "link",

使用Facebook搜索API,我得到了如下回复:

"data" : [
    {
        "created_time" : "2010-07-24T19:47:31+0000",
        "description" : "...",
        "icon" : "...",
        "id" : "1",
        "link" : "...",
        "name" : "...",
        "type" : "link",
        "updated_time" : "2010-07-24T19:47:31+0000" 
    },
    {
        "created_time" : "2010-07-24T14:57:51+0000",
        "id" : "2",
        "message" : "...",
        "type" : "status",
        "updated_time" : "2010-07-24T14:57:51+0000" 
    },
顺便说一句,第一个变量并不总是
“创建时间”
。由于以下原因,我需要更改
类型
属性位置:

在JSON对象中键入提示位置 注意,类型提示必须首先出现在JSON表示中。这是唯一一种键/值对顺序在JSON处理中很重要的情况

结果必须是:

"data" : [
    {
        "__type" : "link:#Facebook",
        "created_time" : "2010-07-24T19:47:31+0000",
        "description" : "...",
        "icon" : "...",
        "id" : "1",
        "link" : "...",
        "name" : "...",
        "updated_time" : "2010-07-24T19:47:31+0000" 
    },
    {
        "__type" : "status:#Facebook",
        "created_time" : "2010-07-24T14:57:51+0000",
        "id" : "2",
        "message" : "...",
        "updated_time" : "2010-07-24T14:57:51+0000" 
    },

对我来说,以下工作:

寻找

\{(\s+)([^}]*?)"type" : "([^"]*)",\s+
并替换为

{\1"__type" : "\3:#facebook"\1\2
这将查找一个大括号,抓取所有内容,直到第一个
type
条目(如果块不包含条目,则匹配失败),存储其值并在块内容的开头替换它

不支持嵌套块(不知道是否会出现嵌套块)

在C#中:


对我来说,以下工作:

寻找

\{(\s+)([^}]*?)"type" : "([^"]*)",\s+
并替换为

{\1"__type" : "\3:#facebook"\1\2
这将查找一个大括号,抓取所有内容,直到第一个
type
条目(如果块不包含条目,则匹配失败),存储其值并在块内容的开头替换它

不支持嵌套块(不知道是否会出现嵌套块)

在C#中:


对于更复杂的场景,这不起作用。我放弃了这种方法,但谢谢你的时间!对于更复杂的场景,这不起作用。我放弃了这种方法,但谢谢你的时间!