{
"Code": 0,
"Message": "操作成功",
"Data": "[\"20230517181314049\",[\"8888\",1.0]\",[\"8888\",1.0]\",[\"8888\",1.0]]"
}
"Data": "[\"20230517181314049\",[\"8888\",1.0]\",[\"8888\",1.0]\",[\"8888\",1.0]]"
// 也可能是这样的
"Data": "[\"20230517181314049\"]"
// 也可能是这样的
"Data": "[\"20230517181314049\",[\"8888\",1.0]\"]"
我转成了一个json
Data 是string 数据类型
"["20230517181314049",["8888",1.0]",["8888",1.0]",["8888",1.0]]"
分别提取成
字符串 20230517181314049
List集合 ["8888",1.0]",["8888",1.0]",["8888",1.0]
有没有什么好办法 提取
引用chatgpt部分指引作答:
你可以使用Json.NET库来处理这个不规则的JSON数组。以下是一个使用C#提取数据的示例代码:
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
string jsonString = "{\"Code\": 0, \"Message\": \"操作成功\", \"Data\": \"[\\\"20230517181314049\\\",[\\\"8888\\\",1.0],[\\\"8888\\\",1.0],[\\\"8888\\\",1.0]]\"}";
JObject jsonObject = JsonConvert.DeserializeObject<JObject>(jsonString);
string dataString = jsonObject["Data"].ToString();
JArray dataArray = JArray.Parse(dataString);
string firstValue = dataArray[0].ToString();
List<object> listValues = dataArray.ToObject<List<object>>();
Console.WriteLine("First Value: " + firstValue);
Console.WriteLine("List Values:");
foreach (var item in listValues)
{
Console.WriteLine(item.ToString());
}
}
}
这段代码使用Json.NET库来解析JSON字符串。首先,我们将JSON字符串反序列化为JObject对象,然后提取Data字段的值。接下来,我们使用JArray.Parse方法将Data字段的值解析为JArray对象。你可以使用JArray对象来访问和处理数组元素。在示例中,我们提取了第一个值和整个数组作为一个List对象。你可以根据需要进一步处理和使用这些提取的数据。
在使用此代码之前,请确保已安装并引用了Json.NET库。你可以通过NuGet包管理器或手动下载和添加引用来获取Json.NET库。
参考GPT和自己的思路:可以使用Json.NET库对JSON字符串进行解析。
首先需要将Data字段的值转成JArray对象,然后按照索引提取需要的数据:
using Newtonsoft.Json.Linq;
// 假设json字符串存储在变量json中
JObject obj = JObject.Parse(json);
JArray data = JArray.Parse(obj["Data"].ToString());
string str = data[0].ToString();
List<string> list = data.Skip(1).Select(x => x.ToString()).ToList();
其中,str
就是需要提取的字符串值,list
就是需要提取的列表。
参考GPT和自己的思路:可以尝试用 Json.NET 库来解析这个不规则的 JSON 数组。具体代码可以如下:
using Newtonsoft.Json.Linq;
using System.Collections.Generic;
...
// 原始的 JSON 数据字符串
string jsonData = "[\"20230517181314049\",[\"8888\",1.0]\",[\"8888\",1.0]\",[\"8888\",1.0]]";
// 将 JSON 串解析为 JArray 对象
JArray jArray = JArray.Parse(jsonData);
// 从 JArray 对象中提取出字符串和 List 集合
string strData = jArray[0].ToString();
List<string> listData = new List<string>();
for (int i = 1; i < jArray.Count; i++)
{
string item = jArray[i].ToString();
if (item.StartsWith("[") && item.EndsWith("]"))
{
item = item.TrimStart('[').TrimEnd(']');
listData.AddRange(item.Split(','));
}
else
{
listData.Add(item);
}
}
解释一下代码的思路:
引入ChatGPT部分内容参考:
您可以使用 Newtonsoft.Json 库来解析这个 JSON 字符串。首先,您需要将 "Data" 字段的值转换为 JArray 对象,然后提取其中的数据。
以下是示例代码
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
namespace JsonParsingExample
{
class Program
{
static void Main(string[] args)
{
string json = @"
{
""Code"": 0,
""Message"": ""操作成功"",
""Data"": ""[\""20230517181314049\"",[\""8888\"",1.0], [\""8888\"",1.0], [\""8888\"",1.0]]""
}";
JObject obj = JObject.Parse(json);
JArray dataArray = JArray.Parse(obj["Data"].ToString());
string strData = dataArray[0].ToString();
List<string> listData = new List<string>();
for (int i = 1; i < dataArray.Count; i++)
{
listData.Add(dataArray[i].ToString());
}
Console.WriteLine("字符串数据:{0}", strData);
Console.WriteLine("List 数据:");
foreach (string data in listData)
{
Console.WriteLine(data);
}
}
}
}
输出结果:
字符串数据:20230517181314049
List 数据:
["8888",1.0]
["8888",1.0]
["8888",1.0]
上面代码基本都是可以的,如果不满足,可以联系我
定义一个实体对象,属性为
TestModel:Code Message Data 对象
再定义一个 Data对象 作为上面的引用
属性包含 name ,arr 数组
然后获取数据进行序列化就行了