C# 将JSON字符串解析为值

C# 将JSON字符串解析为值,c#,json,parsing,C#,Json,Parsing,我不允许在客户处导入新包。我只允许在获取一个看起来像JSON字符串的字符串对象和一个返回之间进行操作,我应该在列表中返回它的某些部分 我觉得自己受到了极大的限制,就我所能看到的而言,我无法继续。我的最佳选择是使用Regex对象,但也许有更平滑的解决方案?(我相信我也可以使用XDocument和LINQ,如果有帮助的话) 建议?遵循这一点,你应该能够做到 您只需要导入System.Runtime.Serialization.dll(标准.net dll) 编辑: 你有这个方法吗 public st

我不允许在客户处导入新包。我只允许在获取一个看起来像JSON字符串的
字符串
对象和一个返回之间进行操作,我应该在
列表
中返回它的某些部分

我觉得自己受到了极大的限制,就我所能看到的而言,我无法继续。我的最佳选择是使用
Regex
对象,但也许有更平滑的解决方案?(我相信我也可以使用XDocument和LINQ,如果有帮助的话)

建议?

遵循这一点,你应该能够做到

您只需要导入System.Runtime.Serialization.dll(标准.net dll)

编辑:

你有这个方法吗

public static T JsonDeserialize<T> (string jsonString)
所以你可以这样使用它:

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}
string jsonString = "{\"Age\":28,\"Name\":\"Tom\"}";
Person p = JsonHelper.JsonDeserialize<person>(jsonString);
string jsonString=“{\'Age\':28,\'Name\':\'Tom\'”;
personp=JsonHelper.JsonDeserialize(jsonString);
编辑2:

    public class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }

    static void Main(string[] args)
    {
        string json = "[{\"Age\":28,\"Name\":\"Tom\"},{\"Age\":18,\"Name\":\"Andes\"},{\"Age\":32,\"Name\":\"Lily\"}]";
        List<Person> persons = new List<Person>(JsonHelper.JsonDeserialize<Person[]>(json));

    }
公共类人物
{
公共字符串名称{get;set;}
公共整数{get;set;}
}
静态void Main(字符串[]参数)
{
字符串json=“[{\'Age\':28,\'Name\':\'Tom\',{\'Age\':18,\'Name\':\'Andes\',{\'Age\':32,\'Name\':\'Lily\'”;
List persons=新列表(JsonHelper.JsonDeserialize(json));
}
编辑3: JsonHelper是一个实现默认设置的类

/// <summary>
/// JSON Serialization and Deserialization Assistant Class
/// </summary>
public class JsonHelper
{
    /// <summary>
    /// JSON Serialization
    /// </summary>
    public static string JsonSerializer<T>(T t)
    {
        DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
        MemoryStream ms = new MemoryStream();
        ser.WriteObject(ms, t);
        string jsonString = Encoding.UTF8.GetString(ms.ToArray());
        ms.Close();
        return jsonString;
    }
    /// <summary>
    /// JSON Deserialization
    /// </summary>
    public static T JsonDeserialize<T>(string jsonString)
    {
        DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
        MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
        T obj = (T)ser.ReadObject(ms);
        return obj;
    }
}
//
///JSON序列化和反序列化助手类
/// 
公共类JsonHelper
{
/// 
///JSON序列化
/// 
公共静态字符串JsonSerializer(T)
{
DataContractJsonSerializer ser=新的DataContractJsonSerializer(类型(T));
MemoryStream ms=新的MemoryStream();
ser.WriteObject(ms,t);
字符串jsonString=Encoding.UTF8.GetString(ms.ToArray());
Close女士();
返回jsonString;
}
/// 
///JSON反序列化
/// 
公共静态T JsonDeserialize(字符串jsonString)
{
DataContractJsonSerializer ser=新的DataContractJsonSerializer(类型(T));
MemoryStream ms=新的MemoryStream(Encoding.UTF8.GetBytes(jsonString));
T obj=(T)ser.ReadObject(ms);
返回obj;
}
}
遵循这一点,你应该能够做到

您只需要导入System.Runtime.Serialization.dll(标准.net dll)

编辑:

你有这个方法吗

public static T JsonDeserialize<T> (string jsonString)
所以你可以这样使用它:

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}
string jsonString = "{\"Age\":28,\"Name\":\"Tom\"}";
Person p = JsonHelper.JsonDeserialize<person>(jsonString);
string jsonString=“{\'Age\':28,\'Name\':\'Tom\'”;
personp=JsonHelper.JsonDeserialize(jsonString);
编辑2:

    public class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }

    static void Main(string[] args)
    {
        string json = "[{\"Age\":28,\"Name\":\"Tom\"},{\"Age\":18,\"Name\":\"Andes\"},{\"Age\":32,\"Name\":\"Lily\"}]";
        List<Person> persons = new List<Person>(JsonHelper.JsonDeserialize<Person[]>(json));

    }
公共类人物
{
公共字符串名称{get;set;}
公共整数{get;set;}
}
静态void Main(字符串[]参数)
{
字符串json=“[{\'Age\':28,\'Name\':\'Tom\',{\'Age\':18,\'Name\':\'Andes\',{\'Age\':32,\'Name\':\'Lily\'”;
List persons=新列表(JsonHelper.JsonDeserialize(json));
}
编辑3: JsonHelper是一个实现默认设置的类

/// <summary>
/// JSON Serialization and Deserialization Assistant Class
/// </summary>
public class JsonHelper
{
    /// <summary>
    /// JSON Serialization
    /// </summary>
    public static string JsonSerializer<T>(T t)
    {
        DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
        MemoryStream ms = new MemoryStream();
        ser.WriteObject(ms, t);
        string jsonString = Encoding.UTF8.GetString(ms.ToArray());
        ms.Close();
        return jsonString;
    }
    /// <summary>
    /// JSON Deserialization
    /// </summary>
    public static T JsonDeserialize<T>(string jsonString)
    {
        DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
        MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
        T obj = (T)ser.ReadObject(ms);
        return obj;
    }
}
//
///JSON序列化和反序列化助手类
/// 
公共类JsonHelper
{
/// 
///JSON序列化
/// 
公共静态字符串JsonSerializer(T)
{
DataContractJsonSerializer ser=新的DataContractJsonSerializer(类型(T));
MemoryStream ms=新的MemoryStream();
ser.WriteObject(ms,t);
字符串jsonString=Encoding.UTF8.GetString(ms.ToArray());
Close女士();
返回jsonString;
}
/// 
///JSON反序列化
/// 
公共静态T JsonDeserialize(字符串jsonString)
{
DataContractJsonSerializer ser=新的DataContractJsonSerializer(类型(T));
MemoryStream ms=新的MemoryStream(Encoding.UTF8.GetBytes(jsonString));
T obj=(T)ser.ReadObject(ms);
返回obj;
}
}


它看起来像是JSON,还是实际的JSON?有很多开源库可以为您解析它。您可以将它们作为代码而不是dll导入。多么荒谬的约束。看起来你需要学习一些解析理论。你能举个字符串的例子吗?@MatíasFidemraizer它不是一个对象。这只是一根绳子。它是从分发JSON对象的web服务接收的。做出判断它看起来像JSON,或者是真正的JSON?有很多开源库可以为您解析它。您可以将它们作为代码而不是dll导入。多么荒谬的约束。看起来你需要学习一些解析理论。你能举个字符串的例子吗?@MatíasFidemraizer它不是一个对象。这只是一根绳子。它是从分发JSON对象的web服务接收的。做出判断您假设.net是允许的-我与不允许它的客户一起工作all@TomBeech既然它被标记为C#我想是的,前提是他们会让我这么做。然后呢?我已经在我的计算机上检查过了,有一个工厂我需要使用它来获得一个解析器,但我不清楚如何使用它来将字符串转换成任何有用的东西。@AndreasJohansson“有一个工厂我需要使用它来获得一个解析器”是什么意思?我在研究
System.Runtime.Serialization.Json
名称空间中的内容。此外,我似乎无法在任何名称空间中找到
JsonHelper
。你在哪里找到它?你假设.net是被允许的-我和不允许它的客户一起工作all@TomBeech既然它被标记为C#我想是的,前提是他们会让我这么做。然后呢?我已经在我的计算机上检查过了,有一个工厂我需要使用它来获得一个解析器,但我不清楚如何使用它来将字符串转换成任何有用的东西。@AndreasJohansson“有一个工厂我需要使用它来获得一个解析器”是什么意思?我在研究
System.Runtime.Serialization.Json
名称空间中的内容。此外,我似乎无法在任何名称空间中找到
JsonHelper
。你在哪里找到的?