Java—如何迭代这个映射方法,使我的方法返回一个字符串

Java—如何迭代这个映射方法,使我的方法返回一个字符串,java,algorithm,Java,Algorithm,我有这样一种方法: public static String m(String key1, String value1, String key2, String value2) { return "{ " + " \"SomeAttribute\": " + "{" + "\"" + key1 + "\": \"" + value1 + "," + "\"" + key2 + "\": \

我有这样一种方法:

public static String m(String key1, String value1,  String key2, String value2) {

    return "{ "
            + " \"SomeAttribute\": "
            + "{"
            + "\"" + key1 + "\": \"" + value1 + ","
            + "\"" + key2 + "\": \"" + value2
            + "\"}"
            + "}";
}
我想更改它,以便它接受一个映射作为参数,而不是字符串。我尝试了这种方法,但我对synaxt感到困惑,因为有太多的+和“”:


有人能告诉我如何修复此代码吗?

循环不会以这种方式返回您想要的字符串,您需要创建字符串,并在每个循环中连接一个新字符串:

public static String m(Map<String, String> mp)
{
   Iterator<?> it = mp.entrySet().iterator();

   String str = "{"
      + " \"SomeAttribute\": "
      + "{";

   while (it.hasNext())
   {
      Map.Entry pair = (Map.Entry) it.next();
      str += "\"" + pair.getKey() + "\": \"" + pair.getValue() + "\",";
   }

   str += "}"
      + "}";

   return str;    
}

列表
用法似乎比
地图
更适合您的情况。添加一个示例!输出是什么?你期待什么?问题是什么?通过字符串连接创建JSON数据是个坏主意。使用合适的JSON库。不要手动生成JSON。使用JSON解析器/封送器。他们有很多。它们都会生成有效的JSON,而您的代码在某些情况下不会生成。谢谢@boobalangnanasekaran,您能告诉我如何使用列表吗?
public static String m(Map<String, String> mp)
{
   Iterator<?> it = mp.entrySet().iterator();

   String str = "{"
      + " \"SomeAttribute\": "
      + "{";

   while (it.hasNext())
   {
      Map.Entry pair = (Map.Entry) it.next();
      str += "\"" + pair.getKey() + "\": \"" + pair.getValue() + "\",";
   }

   str += "}"
      + "}";

   return str;    
}
public static String m(Map<String, String> mp)
{
   String str = "{"
      + " \"SomeAttribute\": "
      + "{";

   for (Map.Entry<String, String> pair : mp.entrySet())
   {
      str += "\"" + pair.getKey() + "\": \"" + pair.getValue() + "\",";
   }

   str += "}"
      + "}";

   return str;
}