2015-08-14 89 views
1

我遇到了一些麻烦。C#和JSON在解析数据时遇到了问题

我想让用户创建一个项目。从那里,我将该项目添加到列表并序列化它。

ItemsList.Add(Items); 
json = JsonConvert.SerializeObject(ItemsList, Formatting.Indented); 
File.AppendAllText(subPathJson + "/" + filename, json + Environment.NewLine); 

Items是包含PriceIDName类。

这工作正常。然而,随着多个项目,我得到一个文件,该文件是这样的:

[ 
    { 
    "id": 0, 
    "name": "Test", 
    "price": 0.1 
    } 
] 
[ 
    { 
    "id": 0, 
    "name": "Test2", 
    "price": 0.1 
    } 
] 

不过,我需要我的文件看起来像这样:

[ 
    { 
    "id": 0, 
    "name": "Test", 
    "price": 0.1 
    }, 
    { 
    "id": 0, 
    "name": "Lol", 
    "price": 0.1 
    } 
] 

我究竟在做什么错?

+0

'ItemsList'被传递一种叫'Items' ..这是复数。既然你不提供任何变量的类型,我会猜测复数表示列表或数组。在这种情况下,'Itemslist'是列表的列表..并且JSON是正确的。在序列化之前展开'ItemsList'。 –

+0

@SamAxe抱歉,这是一门课。我也加上这个,避免混淆。 –

+0

当你在调试器中检查'json'时,它看起来应该如何? –

回答

0

试试这个。它可能会帮助你。

var invalidJson = "[{\"id\": 0,\"name\": \"Test\",\"price\": 0.1}][{\"id\": 0,\"name\": \"Test2\",\"price\": 0.1}]"; 
var json = invalidJson.Replace("][", ","); 
var result = JsonConvert.DeserializeObject<List<RootObject>>(json); 

public class RootObject 
{ 
    [DataMember(Name = "id")] 
    public int Id { get; set; } 
    [DataMember(Name = "name")] 
    public string Name { get; set; } 
    [DataMember(Name = "price")] 
    public double Price { get; set; } 
} 

您需要导入NewtonSoft.Json.Net